Page 117 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 117
배열 이름 x와 배열의 첫 번째 요소에 대한 포인터 &x[0]이 같다는 것은 02장에서 살펴보았습니다.
실습 3-5 •완성 파일 chap03/bsearch1.c
01 /* bsearch 함수를 사용해 오름차순으로 정렬된 배열을 검색합니다. */
실행 결과
02 #include <stdio.h>
bsearch 함수를 사용하여 검색
03 #include <stdlib.h> 요소 개수 : 8
04 오름차순으로 입력하세요.
05 /*--- 정수를 비교하는 함수(오름차순) ---*/ x[0] : 15
06 int int_cmp(const int *a, const int *b) x[1] : 18
07 { x[2] : 18
x[3] : 23
08 if(*a < *b)
x[4] : 39
09 return -1; x[5] : 57
10 else if(*a > *b) x[6] : 68
11 return 1; x[7] : 72
12 else 검색값 : 18
13 return 0; 18은(는) x[1]에 있습니다.
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
26 printf("오름차순으로 입력하세요.\n");
27 printf("x[0] : ");
28 scanf("%d", &x[0]);
29 for(i = 1; i < nx; i++) {
30 do {
31 printf("x[%d] : ", i);
32 scanf("%d", &x[i]);
33 } while(x[i] < x[i - 1]); /* 바로 앞의 값보다 작으면 다시 입력 */
34 }
35 printf("검색값 : ");
36 scanf("%d", &ky);
03•검색 117