λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Programming/C language

[Algorithm] Time complexity (μ‹œκ°„λ³΅μž‘λ„)

by Dowon Kang 2024. 1. 21.

μ‹œκ°„ λ³΅μž‘λ„λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄ μž…λ ₯ λ°μ΄ν„°μ˜ 크기에 λŒ€ν•΄ μ–Όλ§ˆλ‚˜ 효율적으둜 λ™μž‘ν•˜λŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ°œλ…μž…λ‹ˆλ‹€.

μ’€ 더 κ΅¬μ²΄μ μœΌλ‘œλŠ” μ•Œκ³ λ¦¬μ¦˜μ΄ μž…λ ₯ 크기에 따라 μ†Œμš”λ˜λŠ” 계산 μ‹œκ°„μ˜ 증가 정도λ₯Ό ν‘œν˜„ν•©λ‹ˆλ‹€. μ‹œκ°„ λ³΅μž‘λ„λŠ” μ•Œκ³ λ¦¬μ¦˜μ˜ νš¨μœ¨μ„±μ„ λΆ„μ„ν•˜κ³  λ‹€λ₯Έ μ•Œκ³ λ¦¬μ¦˜κ³Ό λΉ„κ΅ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

 

ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ‹œκ°„λ³΅μž‘λ„λŠ” ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μž‘μ„±ν•œ μ½”λ“œμ˜ Running time을 μ˜λ―Έν•©λ‹ˆλ‹€. 

μœ„ 3쀄 짜리 μ½”λ“œμ˜ μ†Œμš” μ‹œκ°„μ€ 7ns μž…λ‹ˆλ‹€. 쒋은 ν”„λ‘œκ·Έλž¨μ΄λΌλ©΄ μ€€μˆ˜ν•œ 속도와 정확성이 λ’·λ°›μΉ¨λ˜μ–΄μ•Ό ν•˜κΈ°λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž¨μ˜ μ†Œμš” μ‹œκ°„μ΄ μ€‘μš”ν•˜λ‹€κ³  말할 수 μžˆμŠ΅λ‹ˆλ‹€. 

그럼 반볡문의 κ²½μš°λŠ” μ–΄λ–¨κΉŒμš”?

  • 'Outer loop'의 경우 5번  →  n번일 경우 n번
  • 'Inner loop'의 경우 25번 →  n번일 경우 n^2번 

= 5n^2 + 3n 

 

μ΄λ ‡κ²Œ 총 μ‹€ν–‰μ‹œκ°„μ„ μž…λ ₯크기 n에 λŒ€ν•œ ν•¨μˆ˜λ‘œ ν‘œν˜„ν•œ κ²°κ³Όλ₯Ό μ‹œκ°„λ³΅μž‘λ„λΌ ν•©λ‹ˆλ‹€. μ΄λ•Œ, n은 μž…λ ₯ λ°μ΄ν„°μ˜ ν¬κΈ°μž…λ‹ˆλ‹€. λ³΅μž‘ν•œ μ‹œκ°„λ³΅μž‘λ„μ˜ ν‘œν˜„μ„ κ°„λ‹¨νžˆ μ•Œμ•„λ³΄κΈ° μœ„ν•΄μ„œ ν•¨μˆ˜μ˜ μ΅œκ³ μ°¨ν•­μœΌλ‘œλ§Œ μ‹œκ°„λ³΅μž‘λ„λ₯Ό ν‘œκΈ°ν•œ 것을 Big O ν‘œκΈ°λ²•μ΄λΌκ³  ν•©λ‹ˆλ‹€, μ΄λŠ” μƒν•œμ„ λ‚˜νƒ€λ‚΄λ©° μ•Œκ³ λ¦¬μ¦˜μ˜ μ‹€ν–‰ μ‹œκ°„μ΄ μ–Όλ§ˆλ‚˜ λΉ λ₯΄κ²Œ μ¦κ°€ν•˜λŠ”μ§€λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

 

 

예λ₯Ό λ“€μ–΄, O(n), O(n log n), O(n^2)은 각각 μ„ ν˜• μ‹œκ°„, 둜그 μ„ ν˜• μ‹œκ°„, 이차 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ΄λŠ” μž…λ ₯ 크기 n이 컀질 λ•Œ 각각 μ„ ν˜•μ μœΌλ‘œ, 둜그 μ„ ν˜•μ μœΌλ‘œ, 제곱적으둜 μ¦κ°€ν•œλ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

 

μ‹œκ°„ λ³΅μž‘λ„λ₯Ό 평가할 λ•ŒλŠ” μ΅œμ•… μ‹œκ°„ λ³΅μž‘λ„, 평균 μ‹œκ°„ λ³΅μž‘λ„, μ΅œμ„  μ‹œκ°„ λ³΅μž‘λ„ λ“± λ‹€μ–‘ν•œ 경우λ₯Ό κ³ λ €ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 주둜 μ΅œμ•… μ‹œκ°„ λ³΅μž‘λ„κ°€ κ°€μž₯ μ€‘μš”ν•˜κ²Œ 닀루어지며, μ΄λŠ” μ΅œμ•…μ˜ μƒν™©μ—μ„œλ„ μ•Œκ³ λ¦¬μ¦˜μ΄ μ–΄λŠ μ •λ„μ˜ μ„±λŠ₯을 보μž₯ν•˜λŠ”μ§€λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

 

 

 


Time complexity is the computational complexity that describes the amount of computer time it takes to run an algorithm. 

 

Big O Notation is a tool used to describe the time complexity of algorithms. It calculates the time taken to run an algorithm as the input grows. 

 

'Programming > C language' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

4 Constant  (1) 2024.01.23
3 Variable  (0) 2024.01.22
2 Hello world  (0) 2024.01.22
1 C language - Why do we learn it  (0) 2024.01.22
[자료ꡬ쑰] Data structure  (0) 2024.01.07

λŒ“κΈ€