def selection_sort(array):
for i in range(len(array)):
min_index = i
for j in range(i + 1, len(array)):
if array[min_index] > array[j]:
min_index = j
array[i], array[min_index] = array[min_index], array[i]
array = [7, 3, 1, 5, 9]
selection_sort(array)
print(array) # [1, 3, 5, 7, 9]
def insertion_sort(array):
for i in range(1, len(array)):
for j in range(i, 0, -1):
if array[j] >= array[j - 1]:
break
array[j], array[j - 1] = array[j - 1], array[j]
array = [7, 3, 1, 5, 9]
insertion_sort(array)
print(array) # [1, 3, 5, 7, 9]
def quick_sort(array, start, end):
if start >= end:
return
pivot = start
left, right = start + 1, end
while True:
while left <= end:
if array[pivot] < array[left]:
break
left += 1
while right > start:
if array[pivot] >= array[right]:
break
right -= 1
if left >= right:
break
array[left], array[right] = array[right], array[left]
array[pivot], array[right] = array[right], array[pivot]
quick_sort(array, start, right - 1)
quick_sort(array, right + 1, end)
array = [6, 4, 1, 3, 5, 0]
quick_sort(array, 0, len(array) - 1)
print(array)
def quick_sort(array):
if len(array) <= 1: # 두 개부터 재귀에 들어가므로
return array
pivot = array[0]
tail = array[1:] # 이 문장이 반드시 유효해지는 것 (1개 이하면 에러 발생)
left = [i for i in tail if i < pivot]
right = [i for i in tail if i >= pivot]
return quick_sort(left) + [pivot] + quick_sort(right)
def counting_sort(array):
new_array = []
count = [0] * (max(array) + 1)
for i in array:
count[i] += 1
for i in range(len(count)):
for j in range(count[i]):
new_array.append(i)
return new_array