C++ sort 알고리즘 완벽 정리 (예제 첨부)
C++ 에서 sort algorithm 사용법에 대해서 정리해봤습니다.
개발할 때, 정렬을 정말 많이 사용합니다.
기본적으로 오름차순, 내림차순 정렬을 할 수가 있고 더 나아가 객체정렬을 필요한 경우가 있습니다.
그럴때 어렵지 않게 사용하는 정렬 알고리즘이 stl::sort( )가 되겠습니다.
- STL에서 정렬을 해주는 함수
- quick sort(퀵 정렬)을 기반으로 구현 [시간 복잡도 n log n]
- www.cplusplus.com/reference/algorithm/sort/
sort - C++ Reference
custom (2)template void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
www.cplusplus.com
- Header파일 추가
#include <algorithm>
- 함수 원형
template<typename T>
void sort(T start, T end);
template<typename T>
void sort(T start, T end, Compare comp);
[3번째 인자값 : 사용자 정의한 함수 또는 STL에 존재하는 이항조건자(less, greater)]
- 비교 가능
- 숫자 비교
- 대소 비교 가능한 모든 원소에 대해 정렬 가능 ( int, char, string 등..)
- 객체 비교 가능 ( 단, 사용자 정의 함수를 이용하며 연산자 오버로딩('<')을 정의해줘야함 )
- 예시
※ [start, end) 의 범위에 있는 인자(element)
start를 포함하고 end를 포함하지 않는 구간!
배열(arr), vector(v)
- sort(arr, arr + n); // 배열에서 사용 (시작점 주소와 마지막 주소 + 1)
- sort(v.begine(), v. end()); [less<자료형>() 생략] // 오름차순 정렬 (default = Ascending order)
- sort(v.begine(), v. end(), greater<자료형>()); // 내림차순 정렬 (Descending order)
- sort(v.begine(), v. end(), compare); // 사용자 정의 함수 compare
- 배열 사용 예시
3번째 인자가 빈값으로 설정 --> Default 오름차순 [less<int>() 생략]
- Vector 사용 예시
string 기준으로 오름차순, 내림차순 사용 방법 [아스키코드 기준으로 정렬됨]
※ less, greater STL을 사용하기 위해서 #include<functional> 을 사용
위의 예시 필요한 헤더 포함해주시고 사용하시면 되겠습니다.