sort 함수는 C++ STL에서 제공하는 함수로써 정렬에 이용되면 <algoritm>헤더를 include하여 사용한다.
시간복잡도는 nlogn이다.
사용법은 두 가지가 있다.
vector<int>v(10,4); //4로 초기화 된 벡터 10개 생성.
sort(v.begin(),v.end());
sort(v.begin(),v.end(),compare_func);
첫 번째 경우
첫 번째 인자: iterator(or 포인터)에서 정렬을 시작 할 부분
두 번째 인자: iterator(or 포인터)에서 정렬을 마칠 부분
이 때 중요한 점은 [begin,end) 범위로 정렬을 한다는 것이다. (begin <= 범위 <end)
즉, 예를 들어 int a[100]에서 0~10번 인덱스까지 정렬한다고 했을 때, 첫 번째 인자에는 배열의 시작 주소인 a을 넣고, 두 번째 인자에는 a+9가 아닌 a+10을 넣어야 한다는 것이다.
두 번째 경우
첫 번째 인자, 두 번째 인자 : 1번과 동일
세 번째 인자 : 정렬을 어떤 식으로 할 것인지 알려주는 함수
이 세 번째 인자를 compare함수라고 많이들 부르던데, 이 부분에는 bool형 함수나 혹은 수식(수식도 0또는 1이 나오므로)을 넣어 줄 수 있다.
함수를 사용하는 경우, 두 개의 매개 변수를 받도록 선언하면 sort함수에서 자동으로 값을 할당한다.
주의해야 할 점은 인자로는 compare()가 아닌 compare를 넣어줘야 한다는 것이다.
sort 함수에서 세 번째 인자로 들어간 함수를 인식하여, 자동으로 앞에 수를 i, 뒤에 수를 j에 넣어주게 되는데, i > j가 참이면 1, 거짓이면 0을 반환하는 함수이므로, i가 j보다 클 경우 sort를 실시하게 되어 내림차순으로 정렬된다.