예를 보자
1. sort (quick sort로 구현)
위에 보이는 것과 같이 크기 순서대로 정렬이 되어진다.
sort의 3번째 매개변수 값을 정하지 않으면
default 값으로 오름차순 정렬이 된다.
내림차순으로 정렬을 원한다면
#include<functional>을 정의하고
sort(a,a+10,greater<int>());
와 같이 3번째 매개변수 값으로 greater<int>()를 추가해주면 된다.
2.stable_sort (merge sort로 구현)
stable_sort의 사용법은 sort와 완전히 같다
보이는 것과 같이 sort와 똑같이 사용해주면 된다.
하지만 sort와 다른점은 정렬하는 원소값이 같은 경우이다.
다음을 보자
다음 코드는 vector에
한쌍의 순서쌍을 6개 원소로 넣었다
sort로 정렬하였는데
정렬기준은 내가 지정한 cmp함수를 따른다
cmp는 순서쌍의 "첫번째 원소"가 작다면
앞쪽에 오도록 하였다(오름차순)
결과를 보면
12 32 42 44 52 72
순서로 잘 정렬이 되어있는데
42 와 44와 같이
첫번째 원소가 같은경우 어떻게 정렬이 될까??
이경우 sort로 정렬한다면
누가 앞에 올지 예측 할수 없다.
하지만 stable_sort로 정렬한다면 컨테이너의 앞의 원소(여기선 vector의 앞 원소)
순서대로 정렬이 된다
즉 42와 44는 42가 앞에 있기때문에
42 44 순서로 정렬이 된다.!
이를 응용하는 문제는
https://www.acmicpc.net/problem/10814
를 풀어보자