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
   238   239   240   241   242   243   244   245   246   247   248