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