매번 가장 작은 것을 선택하여 해당되는 앞자리에 두는 방법
O(N^2) : N-1 번 기준보다 뒤에 있는 원소들을 살펴보며 최소값을 찾음
파이썬에서는 swap 을 매우 편리하게 가능
a, b = b, a
병합 정렬만큼 빠르고 가장 많이 사용됨
기준 데이터를 설정하고 기준보다 큰 데이터와 작은 데이터의 위치 바꾸기
호어 분할 방식에서는 첫 원소를 피벗으로 둠
다음은 위 방식보다는 비효율적이지만 파이썬의 장점을 살려 보기 간편한 코드
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[0]
tail = arr[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)
sorted_arr = quick_sort(arr)
평균적으로 O(NlogN) : 왼쪽과 오른쪽으로 나뉘며 두갈래로 진행되기 때문
최악의 경우 O(N^2) : 모두 정렬된 경우
C++, 파이썬 모두 피벗 설정에 추가적인 로직이 들어가 O(NlogN) 을 보장함
이것이 취업을 위한 코딩테스트다 with Python
도서, 나동빈