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
   112   113   114   115   116   117   118   119   120   121   122