6. Quick Sort
by Qerogram오늘은 Quick Sort를 구현해보았다.
Quick Sort 알고리즘을 대충 설명한다.
1,4,2,5,7,3,6,8을 가지는 배열 arr가 있다고 가정하자.
여기서 가운데 값인 5를 기준을 잡는다.
이 때, 이 기준인 5를 pivot이라고 부른다.
그리고 왼쪽부터 pivot까지를 탐색하여
pivot보다 값이 큰가? 하고 물어본다.
1 < 5 는 pivot보다 값이 작기 때문에 내려놓는다.
4와 2 또한 마찬가지다.
그렇다면, 오른쪽으로 가서 하나씩 물어본다.
8은 pivot보다 큰가? 참이다.
이런식으로 하다가 3에서 걸리게된다.
3은 pivot보다 큰가? 에서 거짓이 나오게되고.
3과 pivot의 위치를 바꾸게 된다.
루프를 한번 돌게되면
1 4 2 3 7 5 6 8이 된다.
이걸 Recursion을 이용해 다 돌리게 되면 O(n * log n)의 처리 속도의 Quick Sort를 완성하게된다.
(최악의 경우 O(n^2)가 소모되긴 하지만).
'코딩 > C&C++' 카테고리의 다른 글
8. 함수 템플릿의 이해1 (0) | 2017.04.13 |
---|---|
7. Merge sort(합병정렬) (0) | 2017.04.10 |
5. void PTR (0) | 2017.04.09 |
4. 다형성 (0) | 2017.04.09 |
3. 복사생성자를 통한 깊은 복사. (0) | 2017.04.08 |
블로그의 정보
Data+
Qerogram