Page 245 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 245

24
                         25  /*--- Person형 비교 함수(몸무게 내림차순 정렬) ---*/
                         26  int wpcmp(const Person *x, const Person *y)
                         27  {
                                                                    3
                         28    return x->weight < y->weight ?  1 :
                         29           x->weight > y->weight ? -1 : 0;
                         30  }
                         31
                         32  /*--- 사람 no명의 데이터를 출력 ---*/
                         33  void print_person (const Person x[], int no)
                         34  {
                         35    int i;
                         36    for(i = 0; i < no; i++)
                         37      printf("%-10s %dcm %dkg\n", x[i].name, x[i].height, x[i].weight);
                         38  }
                         39
                         40  int main (void)
                         41  {
                         42    Person x[] = {
                         43      {"sunmi", 170, 52},
                         44      {"yoobin", 180, 70},
                         45      {"sohee", 172, 63},
                         46      {"jina", 165, 50},
                         47    };
                         48
                         49    int nx = sizeof(x) / sizeof(x[0]);    /* 배열 x의 요소 개수 */
                         50
                         51    puts("정렬 전");
                         52    print_person(x, nx);
                         53
                         54    /* 이름 오름차순으로 정렬 */
                         55    qsort(x, nx, sizeof(Person),(int(*)(const void *, const void *)) npcmp);
                         56    puts("\n이름 오름차순으로 정렬 후");
                         57    print_person(x, nx);
                         58
                         59    /* 키 오름차순으로 정렬 */
                         60    qsort(x, nx, sizeof(Person),(int(*)(const void *, const void *)) hpcmp);
                         61    puts("\n키 오름차순으로 정렬 후");
                         62    print_person(x, nx);
                         63





                                                                                          06•정렬  245
   240   241   242   243   244   245   246   247   248   249   250