qsort
qsort
qsort 기본형
1
2
3
4
5
int _CompareFunction(const void* a, const void*b){
return 1 or 0;
}
qsort(void* _Base, size_t _NumOfElements, size_t _SizeOfElements, _CompareFunction);
cmp함수와 함께 사용
- 어떤 형태의 데이터든 받기 위해 void*와 (함수 내에서 원하는 자료형으로 변환해서 사용)
정렬만 할 것이기에 데이터 무결성 보장 const 사용 (데이터 안 변함)
- return 참이면(양수) 위치 교환
- return 거짓이면(음수) 위치 유지
qsort 활용 (in 구조체 멤버)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 100000
typedef struct {
int x;
int y;
}P;
int cmp1(const void* a, const void* b) {
P* pa = (P*)a;
P* pb = (P*)b;
if (pa->x == pb->x) {
return pa->y - pb->y;
}
else return pa->x - pb->x;
}
int main() {
int N;
scanf("%d", &N);
P p[MAX];
for (int i = 0; i < N; i++) {
scanf("%d %d", &p[i].x, &p[i].y);
}
qsort(p, N, sizeof(P), cmp1);
for (int i = 0; i < N; i++) {
printf("%d %d\n", p[i].x, p[i].y);
}
return 0;
}