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 알고리즘
   99   100   101   102   103   104   105   106   107   108   109