728x90
- 분할 알고리즘의 하나로 평균적으로 굉장히 빠른 시간 복잡도를 갖고 있는 정렬 방법이다.
- 기준이 되는 데이터 값을 정하고 (이를 피벗(Pivot)이라고 칭한다.) 이를 중심으로 피벗 앞에는 피벗보다 작은 값이 오고 피벗 뒤의 값에는 피벗보다 큰 값이 온다. 이렇게 두 개의 작고, 큰 부분들을 나누는 것을 분할이라고 부르며 분할되어진 두개의 리스트에 대해 재귀적으로 이 과정을 반복하여 정렬한다.
- 코드는 아래와 같다.
def quick_sort(li):
if len(li) <= 1:
return li
pivot = li[len(li)//2]
less = []
more = []
equal = []
for i in li:
if i < pivot:
less.append(i)
elif i > pivot:
more.append(i)
else:
equal.append(i)
return quick_sort(less)+equal+quick_sort(more)
'공부 > 파이썬' 카테고리의 다른 글
[알고리즘] 그래프란? (0) | 2022.06.21 |
---|---|
[자료구조]해시(HASH)란? (0) | 2022.06.17 |
[알고리즘] 삽입 정렬(Insertion Sort) (0) | 2022.06.13 |
[알고리즘] 버블 정렬 (bubble sort) (0) | 2022.06.13 |
[자료구조] 스택(Stack)과 큐(Queue) (0) | 2022.06.08 |
댓글