Page 104 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 104
07 {
실행 결과
08 int i = 0;
선형 검색(보초법)
09 a[n] = key; /* 보초를 추가 */ 1 요소 개수 : 7
10 while(1) { x[0] : 6
11 if(a[i] == key) x[1] : 4
12 break; /* 원하는 키 값을 찾은 경우 */ 2 x[2] : 3
x[3] : 2
13 i++;
x[4] : 1
14 }
x[5] : 3
15 return i == n ? -1 : i; 3 x[6] : 8
16 } 검색값 : 3
17 3은(는) x[2]에 있습니다.
18 int main(void)
19 {
20 int i, nx, ky, idx;
21 int *x; /* 배열의 첫 번째 요소에 대한 포인터 */
22 puts("선형 검색(보초법)");
23 printf("요소 개수 : ");
24 scanf("%d", &nx);
25 x = calloc(nx + 1, sizeof(int)); /* 요소의 개수가 (nx + 1)인 int형 배열을 생성 */
x = calloc(nx + 1, sizeof(int)); /* 요소의 개수가 (nx + 1)인 int형 배열을 생성 */
26 for(i = 0; i < nx; i++) { /* 주의 : 값을 읽어 들인 것은 nx개 */
27 printf("x[%d] : ", i);
28 scanf("%d", &x[i]);
29 }
30 printf("검색값 : ");
31 scanf("%d", &ky);
32 idx = search(x, nx, ky); /* 배열 x에서 값이 ky인 요소를 선형 검색 */
33 if(idx == -1)
34 puts("검색에 실패했습니다.");
35 else
36 printf("%d(은)는 x[%d]에 있습니다.\n", ky, idx);
37 free(x); /* 배열을 해제 */
38
39 return 0;
40 }
1 검색값 key를 보초로 a[n]에 대입합니다.
2 배열 요소를 순서대로 검사합니다. 앞서 실습 3-1의 while문에는 다음과 같은 if문이 2개
있었습니다.
104 C 알고리즘