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

14         return pc;
                     15       else if(a[pc] < key)
                     16         pl = pc + 1;
                     17       else
                     18         pr = pc - 1;
                     19     } while(pl <= pr);
                     20     return -1;                       /* 검색 실패 */
                     21  }
                     22
                     23  int main (void)
                     24  {
                     25     int i, nx, ky, idx;
                     26     int *x;                           /* 배열의 첫 번째 요소에 대한 포인터 */
                     27     puts("이진 검색");
                     28     printf("요소 개수 : ");
                     29     scanf("%d", &nx);
                     30     x = calloc(nx, sizeof(int));        /* 요소의 개수가 nx인 int형 배열을 생성 */
                            printf("오름차순으로 입력하세요.\n");
                     31     printf("오름차순으로 입력하세요.\n");
                            printf("x[0] : ");
                     32     printf("x[0] : ");
                            scanf("%d", &x[0]);
                     33     scanf("%d", &x[0]);
                     34     for(i = 1; i < nx; i++) {
                            for(i = 1; i < nx; i++) {
                              do {
                     35       do {
                     36         printf("x[%d] : ", i);
                                printf("x[%d] : ", i);
                     37         scanf("%d", &x[i]);
                                scanf("%d", &x[i]);
                     38       } while(x[i] < x[i - 1]);           /* 바로 앞의 값보다 작으면 다시 입력 */
                              } while(x[i] < x[i - 1]);         /* 바로 앞의 값보다 작으면 다시 입력 */
                     39     }  }
                     40     printf("검색값 : ");
                     41     scanf("%d", &ky);
                     42     idx = bin_search(x, nx, ky);        /* 배열 x에서 값이 ky인 요소를 이진 검색 */
                     43     if(idx == -1)
                     44       puts("검색에 실패했습니다.");
                     45     else
                     46      printf("%d는(은) x[%d]에 있습니다.\n", ky, idx);
                     47     free(x);                         /* 배열 해제 */
                     48
                     49     return 0;
                     50   }











                   110   C 알고리즘
   105   106   107   108   109   110   111   112   113   114   115