Big O (2) : O(1), O(log n), O(nlog n)

μ±„μ˜λ―ΌΒ·2024λ…„ 3μ›” 19일
0
post-custom-banner

πŸ“š Big O(1)

πŸ’‘ O(n), O(n^2)은 n이 컀지면 Oκ°€ μ¦κ°€ν•œλ‹€. ν•˜μ§€λ§Œ O(1)은 μΆ”κ°€λ§Œ ν•˜λŠ” κ²½μš°μ΄λ‹€.
πŸ’‘ O(1)은 constant μ‹œκ°„μ΄λΌκ³ λ„ ν•œλ‹€. κ·Έ 말은 n이 증가해도 μž‘μ—…μˆ˜λŠ” 항상 일정함을 λœ»ν•œλ‹€.

πŸ—£οΈ κ°€μž₯ 효율적인 λΉ… O

def add_items(n) 
	return n + n
  • 이 같은 ν•¨μˆ˜μ—μ„œλŠ” n이 아무리 컀져도 μ‹€ν–‰ νšŸμˆ˜λŠ” 1회 이닀.

πŸ“š Big O(log n)

πŸ’‘ O(log n)은 O(1) 만큰 νš¨μœ¨μ μ΄μ§€ μ•Šμ§€λ§Œ O(n), O(n^2) λ³΄λ‹€λŠ” 훨씬 νš¨μœ¨μ μ΄λ‹€.

πŸ’‘ 1 - 8κΉŒμ§€ μ •λ ¬λœ 배열이 μžˆλ‹€λΌκ³  κ°€μ •ν–ˆμ„ λ•Œ, μ—¬κΈ°μ—μ„œ κ°€μž₯ 효율적으둜 숫자 1을 μ°ΎλŠ” 방법은?

  • 배열을 반으둜 λ‚˜λˆˆλ‹€, [1-4], [5-8] μš°λ¦¬κ°€ μ›ν•˜λŠ” 숫자1은 첫번째 배열에 μžˆμœΌλ―€λ‘œ, [1-4]만 κ°–κ³  λ‚˜λ¨Έμ§€λŠ” 버린닀.
  • μœ„μ™€ 같이 반으둜 λ‚˜λˆ„κ³  ν•„μš”ν•œ 숫자만 μ°ΎλŠ” μž‘μ—…μ„ μš°λ¦¬κ°€ μ›ν•˜λŠ” μˆ«μžκ°€ λ‚˜μ˜¬ λ•Œ κΉŒμ§€ λ°˜λ³΅ν•œλ‹€.
  • 1 - 8κΉŒμ§€ μ •λ ¬λœ 배열에 경우 3회 λ°˜λ³΅ν•˜λ©΄ 값을 찾을 수 μžˆλ‹€.
  • 이거λ₯Ό μˆ˜ν•™μ μœΌλ‘œ λ‚˜νƒ€λ‚΄λ©΄, 밑이 2인 log8 = 3 으둜 ν‘œμ‹œν•  수 μžˆλ‹€.

πŸ“š Big O(nlog n)

πŸ’‘ n log n 은 일뢀 μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜κ³Ό ν•¨κ»˜ μ‚¬μš©λœλ‹€.(병합정렬, 퀡정렬)
πŸ’‘ κ°€μž₯ 효울적으둜 λΆ„λ₯˜ μ•Œκ³ λ¦¬μ¦˜μ„ λ§Œλ“œλŠ” 방법이닀.
πŸ’‘ n
log n을 톡해 숫자뿐 μ•„λ‹ˆλΌ λ‹€μ–‘ν•œ μœ ν˜•μ˜ 데이터λ₯Ό μ •λ ¬ ν•  수 μžˆλ‹€.

profile
μ‹œκ°μ μΈ 코딩을 μ¦κΈ°λŠ” 개발자 지망생 μ±„μ˜λ―Ό μž…λ‹ˆλ‹€;
post-custom-banner

0개의 λŒ“κΈ€