반응형




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