πŸ›©οΈ 선택 μ •λ ¬

  • κ°€μž₯ μž‘μ€ 데이터λ₯Ό μ„ νƒν•˜μ—¬ 맨 μ•žμ˜ λ°μ΄ν„°λž‘ λ°”κΎΈλŠ” μ •λ ¬
  • μ„ νƒμ •λ ¬μ˜ μ‹œκ°„ λ³΅μž‘λ„ : O(N$^2$)
array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8]

for i in range(len(array)):
  min_index = i
  for j in range(i+1, len(array)):
    if array[j] < array[min_index]:
      min_index = j
  array[i], array[min_index] = array[min_index], array[i]

print(array)

πŸ›©οΈ μ‚½μž… μ •λ ¬

  • νŠΉμ •ν•œ 데이터λ₯Ό μ μ ˆν•œ μœ„μΉ˜μ— μ‚½μž…ν•˜λŠ” μ •λ ¬
  • μ‚½μž…μ •λ ¬μ˜ μ‹œκ°„ λ³΅μž‘λ„ : O(N$^2$)
arr = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8]

for i in range(1, len(arr)):
  for j in range(i, 0, -1):
    if arr[j-1]> arr[j]:
      arr[j-1], arr[j] = arr[j], arr[j-1]
    else:
      break
print(arr)

πŸ›©οΈ 퀡 μ •λ ¬

  • κΈ°μ€€ 데이터(pivot)λ₯Ό μ„€μ •ν•˜κ³  κ·Έ 기쀀보닀 큰 데이터와 μž‘μ€ λ°μ΄ν„°μ˜ μœ„μΉ˜λ₯Ό λ°”κΎΈλŠ”κ²ƒ
  • ν€΅μ •λ ¬μ˜ μ‹œκ°„ λ³΅μž‘λ„ : O(*Nlog(N)*)
array = [5, 7, 9, 0, 3, 1, 6, 2, 4, 8]

def quick_sort(array, start, end):
  if start >= end:
    return
  pivot = start
  left = start + 1
  right = end
  while left <= right:
    while left <= end and array[left] <= array[pivot]:
      left += 1
    while right > start and array[right] >= array[pivot]:
      right -= 1
    if left > right:
      array[right], array[pivot] = array[pivot], array[right]
    else:
      array[left], array[right] = array[right], array[left]
    quick_sort(array, start, right-1)
    quick_sort(array, right+1, end)

quick_sort(array, 0, len(array)-1)
print(array)
array = [5, 7, 9, 0, 3, 1, 6, 2, 4, 8]

def quick_sort(array):
  if len(array) <= 1:
    return array
  
  pivot = array[0]
  tail = array[1:]

  left = [x for x in tail if x <= pivot]
  right = [x for x in tail if x > pivot]

  return quick_sort(left) + [pivot] + quick_sort(right)
print(quick_sort(array))

πŸ›©οΈ κ³„μˆ˜ μ •λ ¬

  • λ°μ΄ν„°μ˜ 크기 λ²”μœ„κ°€ μ •μˆ˜ ν˜•νƒœμΌλ•Œ μ‚¬μš©ν•˜λŠ” 맀우 λΉ λ₯Έ μ •λ ¬
  • κ³„μˆ˜μ •λ ¬μ˜ μ‹œκ°„ λ³΅μž‘λ„ : O(*N+K*)
array = [7, 5, 9, 0, 3, 1, 6, 2, 9, 1, 4, 8, 0, 5, 2]
count = [0]*(max(array)+1)

for i in array:
  count[i] += 1

for i in range(len(count)):
  for j in range(count[i]):
    print(i, end=' ')

πŸ›©οΈ 문제 μœ ν˜•μ— λ”°λ₯Έ 풀이법

  1. μ •λ ¬ 라이브러리 μ‚¬μš© : λ‹¨μˆœ μ •λ ¬ 기법확인 문제
  2. μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜ 원리 : 선택 μ •λ ¬, μ‚½μž… μ •λ ¬, 퀡 μ •λ ¬λ“±μ˜ μ•Œκ³ λ¦¬μ¦˜ 이용
  3. 더 λΉ λ₯Έ μ •λ ¬ : κ³„μˆ˜ μ •λ ¬μ΄λ‚˜ λ¬Έμ œμ—μ„œ 주어진 μ•Œκ³ λ¦¬μ¦˜ 확인## ✈ 선택 μ •λ ¬
profile
μ΄μ‚¬μ€‘μž…λ‹ˆλ‹€!🌟https://velog.io/@devkyoung2

0개의 λŒ“κΈ€