병합정렬(Merge Sort)과 함께 기본 정렬알고리즘인 퀵정렬.
병합정렬이 수열을 반으로 쪼개가며 정렬했다면,
퀵정렬은 기준을 두고 기준보다 작은값들, 기준보다 큰값들로 쪼개가며 정렬한다.
병합정렬은 따로 정렬해둔 값을 저장해둘 메모리공간이 필요했다면
퀵정렬은 따로 메모리공간이 필요하지 않다.
하지만 병합정렬은 언제나 시간복잡도가 일정한 반면
퀵정렬은 잡히는 기준에 따라 시간복잡도가 O(n^2)까지 올라갈수있다고한다.
코드는 이러하다.
pivot이 기준 값이 되고
i가 pivot의 자리를 찾아준 다고 생각하면된다.
이해하기 쉽게 예시를들어 그림으로 설명해보자면 이런식이다.
'컴퓨터 > 알고리즘' 카테고리의 다른 글
다익스트라 알고리즘 Dijkstra's algorithm 일정 시간 복잡도 (0) | 2021.06.09 |
---|---|
프림 알고리즘 증명 Prim's Algorithm Proof (0) | 2021.06.08 |
프림 알고리즘 Prim's Algorithm 일정 시간 복잡도 (0) | 2021.06.08 |
[알고리즘] Hash 해쉬 (0) | 2020.03.25 |
[알고리즘] 병합정렬 알고리즘 | Merge Sort | C++코드 해석 (0) | 2020.02.20 |
댓글