본문 바로가기
알고리즘, 자료구조/알고리즘 util

[정렬] sort

by Wordbe 2019. 9. 2.
728x90

버블정렬, 선택정렬, 삽입정렬, 쉘정렬,

병합정렬, 퀵정렬, 힙정렬,

계수정렬, 기수정렬까지...

많은 정렬들을 직접 구현해봤지만, 결국 실전에서는 이것들을 일일이 구현할 순 없다.

물론, 다 외워서 할 수 있으면 정말 좋긴 할 것이다.

실전에서 만약 정렬이 필요하다면,

#include <algorithm>
sort(v.begin(), v.end());
stable_sort(v.begin(), v.end());

STL함수를 써야할 것이다.

sort

여기 있는 sort함수는 introsort라는 하이브리드 기법을 썼다고 한다. 불안정한 quick sort가 아니라서 다행이다.
시간복잡도 O(NlogN)을 보장한다.

stable_sort

또한 중복되는 key에서 각 key가 가진 다른 값도 정렬하고 싶을 때는 stable_sort를 이용하면 된다.

이는 merge sort를 이용한다. 여분의 메모리 공간이 필요한 정렬이다.
메모리공간이 있다면, 시간복잡도 O(NlogN)을 보장한다.

728x90

'알고리즘, 자료구조 > 알고리즘 util' 카테고리의 다른 글

Circular Queue  (0) 2019.08.27

댓글