divide & conquer algorithm
pivot이라고 불리는 임의의 값을 기준으로 분할 정복
쿽 정렬의 성능은 어떠한 pivot 값을 선택하느냐에 영향을 많이 받는다.
Best Case에서는 pivot 값을 기준으로 동일한 개수의 작은 값들과 큰 값들이 분할되어 merge sort와 마찬가지로 O(nlogn)의 시간 복잡도를 가지게 된다.
하지만 pivot 값을 기준으로 분할했을 때 값들이 한 편으로 크게 치우치게 되면 성능이 저하된다. Worst Case의 경우 한 편으로만 모든 값이 몰리게 되어 O(n^2)의 시간 복잡도를 가진다.
따라서 상용화를 할 때에는 중앙값(median)에 가까운 pivot 값을 선택하는 것이 좋다.
배열의 처음, 중앙, 마지막에 들어있는 값들 중에 크기가 중간인 값을 사용하는 방법이 많이 사용된다.
Python Code
![](https://blog.kakaocdn.net/dn/sIZbg/btqFQLI3ml2/GKOIXPc5iwaffb9a3iiuc0/img.png)
'algorithm using python' 카테고리의 다른 글
이진탐색 (0) | 2021.07.17 |
---|---|
graph algorithms - bfs, dfs (0) | 2020.08.04 |
Merge Sort (0) | 2020.07.20 |