다양한 고급 정렬을 C++로 직접 구현해보자.
quick sort
퀵소트는 O(nlogn) 정렬 중에서, 평균적으로 괜찮은 성능을 보인다.
in-place sort이기 때문에, 값을 복사하는 시간이 추가로 들지 않기 때문이다.
다만, stable sort는 아니다.
1 |
|
merge sort
merge sort는 inplace sort는 아니지만 대표적인 stable sort다.
역시 O(nlogn)이다.
1 |
|
count sort
정렬해야 하는 숫자의 범위가 작은 경우, O(n)으로 count sort를 할 수 있다.
범위가 큰 경우, radix sort를 하면 된다.
다만 radix sort의 경우, 상수값이 커서 정렬해야 하는 수가 아주 많지 않은 경우에는
평균적으로 다른 O(nlogn) 정렬보다 더 많은 시간이 소요된다.
1 |
|