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

64    /* 몸무게 내림차순으로 정렬 */
                     65    qsort(x, nx, sizeof(Person),(int(*)(const void *, const void *)) wpcmp);
                     66    puts("\n몸무게 내림차순으로 정렬 후");
                     67    print_person(x, nx);
                     68
                     69    return 0;
                     70  }




                   이 프로그램은 배열 x를 이름, 키, 몸무게를 기준으로 3회 정렬합니다. 각 정렬에 사용하는 비
                   교 함수는 아래와 같습니다.


                     1  이름   오름차순 정렬용 비교 함수   … npcmp 함수
                     2  키    오름차순 정렬용 비교 함수   … hpcmp 함수
                     3  몸무게  내림차순 정렬용 비교 함수  … wpcmp 함수

                      이름의 비교 함수는 strcmp 함수의 반환값을 그대로 반환합니다. strcmp 함수는 문자열을 비교하는 함수로, 이 함수에
                   대한 내용은 08장에서 살펴봅니다.

                   qsort 함수는 같은 키 값을 가지고 있는 데이터가 2개 이상인 경우에 이름의 오름차순으로 정

                   렬이 되기는 하지만 정렬 전후의 데이터가 같은 순서를 유지하지는 않습니다(안정된 정렬은 아
                   닙니다).



                    연습      Q19  qsort 함수를 사용하여 아래 두 배열을 오름차순으로 정렬하는 프로그램을 작성하세요.
                    문제      프로그램에서 정렬하는 부분의 코드는 각각 독립적인 함수로 구현하세요.


                             char   a[][7] = {"LISP", "C", "Ada", "Pascal"};
                             char   *p[]   = {"LISP", "C", "Ada", "Pascal"};



                            Q20   퀵 정렬 알고리즘을 사용하여 qsort 함수와 같은 형식으로 호출할 수 있는 아래의 함수를
                            직접 작성하세요.


                             void q_sort(void *base, size_t nmemb, size_t size,
                                       int(*compar)(const void *, const void *));










                   246   C 알고리즘
   241   242   243   244   245   246   247   248   249   250   251