Page 122 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 122
실습 3-6 •완성 파일 chap03/bsearch2.c
01 /* bsearch 함수를 사용하여 내림차순으로 정렬한 배열에서 검색 */
실행 결과
02 #include <stdio.h>
bsearch 함수를 사용하여 검색
03 #include <stdlib.h> 요소 개수 : 8
04 내림차순으로 입력하세요.
05 /*--- 정수를 비교하는 함수(내림차순) ---*/ x[0] : 79
06 int int_cmpr(const int *a, const int *b) x[1] : 68
x[2] : 57
07 {
x[3] : 39
08 if(*a < *b)
x[4] : 23
09 return 1; x[5] : 22
10 else if(*a > *b) x[6] : 15
11 return -1; x[7] : 13
12 else 검색값 : 22
22는(은) x[5]에 있습니다.
13 return 0;
14 }
15
16 int main(void)
17 {
18 int i, nx, ky;
19 int *x; /* 배열의 첫 번째 요소에 대한 포인터 */
20 int *p; /* 검색한 요소에 대한 포인터 */
21 puts("bsearch 함수를 사용하여 검색");
22 printf("요소 개수 : ");
23 scanf("%d", &nx);
24 x = calloc(nx, sizeof(int)); /* 요소의 개수가 nx인 int형 배열을 생성 */
25 printf("내림차순으로 입력하세요.\n", nx);
26 printf("x[0] : ");
27 scanf("%d", &x[0]);
28 for(i = 1; i < nx; i++) {
29 do {
30 printf("x[%d] : ", i);
31 scanf("%d", &x[i]);
32 } while(x[i] > x[i - 1]); /* 바로 앞의 값보다 크면 다시 입력 */
33 }
34 printf("검색값 : ");
35 scanf("%d", &ky);
36 p = bsearch(&ky, /* 검색값에 대한 포인터 */
37 x, /* 배열 */
38 nx, /* 요소의 개수 */
39 sizeof(int), /* 요소의 크기 */
122 C 알고리즘