반응형
std::sort알고리즘은 퀵소트를 기반으로 동작하는 라이브러리이다.
사용법은 다음과 같다.
1 2 3 4 5 6 7 8 9 | #include <algorithm> using namespace std; int main() { sort(); return 0; } | Crocus |
즉 #include <algorithm>, using namespace std;를 명시해야 sort함수를 쓸 수 있다.
sort(첫번째 주소, 마지막 주소 + 1, 조건);이라는 방식으로 쓰이는데
이때 마지막 주소 + 1이라는것은 별 다른것 없이 sort(a, a + n); 이런식으로 쓴다는 것을 의미한다.
그리고 기본적으로 sort는 조건이 없을 시 오름차순 정렬(1, 2, 3, 4 ...)이 된다.
http://www.crocus.co.kr/413의 내용을 보면 다음과 같은 코드가 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <cstdio> #include <algorithm> struct point { int x, y; }; point p[100000]; bool comp(point const& a, point const& b){ if(a.x == b.x) return a.y < b.y; return a.x < b.x; } int main() { int i, n, x, y; scanf("%d", &n); for(i=0; i<n; ++i){ scanf("%d %d ", &x, &y); p[i] = {x, y}; } std::sort(p, p+n, comp); for(i=0; i<n; ++i){ printf("%d %d\n", p[i].x, p[i].y); } return 0; } | Crocus |
여기서 comp는 조건을 의미하게 되는데 어떤 의미이냐면,
sort를 할 때 두개를 비교하게 될 대, a.x와 b.x가 같다면 즉, x좌표가 같다면 y 좌표중 큰것을 먼저 출력하고 아니면 그대로 출력하라는 조건을 가지고 있다.
결국 std::sort(p, p+n, comp);로 나타내었다.
comp를 적지않고 sort(p, p+n);으로 한다면 그대로 오름차순 정렬이 되어 나타난다. (y값 정렬은 없이)
반응형
'Applied > 알고리즘' 카테고리의 다른 글
병합 정렬(Merge Sort) (0) | 2016.08.30 |
---|---|
버블 정렬(Bubble Sort) (0) | 2016.08.30 |
다양한 Sorting을 보여주는 동영상 (0) | 2016.08.06 |
숫자의 각 자릿수 구하기 알고리즘 (10) | 2016.07.23 |
단어 검색 알고리즘 (0) | 2016.07.06 |