Page 243 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 243
06 int int_cmp (const int *a, const int *b) 실행 결과
07 {
qsort에 의한 정렬
08 if(*a < *b) 요소 개수 : 7
09 return -1; x[0] : 22
10 else if(*a > *b) 실습 3-5와 같음 x[1] : 5
11 return 1; x[2] : 11
x[3] : 32
12 else
x[4] : 120
13 return 0;
x[5] : 68
14 } x[6] : 70
15 오름차순으로 정렬했습니다.
16 int main(void) x[0] = 5
17 { x[1] = 11
x[2] = 22
18 int i, nx;
x[3] = 32
19 int *x; /* 배열의 첫 번째 요소에 대한 포인터 */
x[4] = 68
20 printf("qsort에 의한 정렬\n"); x[5] = 70
21 printf("요소 개수 : "); x[6] = 120
22 scanf("%d", &nx);
23 x = calloc(nx, sizeof(int)); /* 요소의 개수가 nx인 int형 배열을 생성 */
24 for(i = 0; i < nx; i++) {
25 printf("x[%d] : ", i);
26 scanf("%d", &x[i]);
27 }
28 qsort(x, /* 배열 */
29 nx, /* 요소의 개수 */
30 sizeof(int), /* 요소의 크기 */
31 (int(*)(const void *, const void *))int_cmp /* 비교 함수 */
32 );
33 puts("오름차순으로 정렬했습니다.");
34 for(i = 0; i < nx; i++)
35 printf("x[%d] = %d\n", i, x[i]);
36 free(x); /* 배열 해제 */
37
38 return 0;
39 }
이 프로그램에서 정의하고 있는(회색 박스로 표시한 부분) 비교 함수 int_cmp는 bsearch 함수
에서 사용한 비교 함수와 같습니다.
06•정렬 243