반응형
출처:https://ko.wikipedia.org/wiki/%ED%80%B5_%EC%A0%95%EB%A0%AC
Quick Sort
시간복잡도: 최악 - O(n2), 평균 -O(n log n)
퀵 정렬(quick sort)은 비교 정렬, 불안정 정렬에 속한다.
분할 정복 방법을 통해 리스트를 정렬한다.
1. 리스트 가운데에서 하나의 원소를 고른다. (pivot)
2. 분할:
pivot 앞에는 pivot보다 작은 값
pivot 뒤에는 큰 값의 원소들이 오도록 pivot을 기준으로 리스트를 둘로 나눈다.
3. 분할된 리스트는 재귀적으로 반복하여 리스트의 크기가 0이나 1이 될 때까지 반복한다.
1 2 3 4 5 6 7 8 9 10 11 12 | def quick_sort(x): if len(x) < 2: return x else: pivot = x[0] less = [i for i in x[1:] if i <= pivot] more = [i for i in x[1:] if i > pivot] return quick_sort(less) + [pivot] + quick_sort(more) a = [100, 20, 30, 1, 6, 2, 7] print(quick_sort(a)) | cs |
반응형
'Data > python·알고리즘' 카테고리의 다른 글
[python 기초] 데이터 타입과 변수 (0) | 2018.06.26 |
---|---|
[python 기초] python 개요와 설치 (0) | 2018.06.26 |
[백준 알고리즘] 1181번 단어 정렬 (0) | 2018.06.19 |
[합병 정렬] Merge sort - python (0) | 2018.06.19 |
[선택 정렬] Selection sort - python (0) | 2018.06.19 |
댓글