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 알고리즘