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

물론 조건 ①이 성립하면 검색 실패, 조건 ②가 성립하면 검색 성공입니다. 배열 요소의 개수

                   가 n개일 때 ①, ② 조건을 판단하는 횟수는 평균 n / 2회입니다.
                      원하는 값이 배열에 존재하지 않는 경우 ①은 n + 1회, ②는 n회로 됩니다.


                   지금까지 배운 내용으로 선형 검색을 구현한 프로그램이 실습 3-1입니다.


                      실습 3-1                                                •완성 파일 chap03/ssearch1.c
                     01  /* 선형 검색 */                                              실행 결과
                     02  #include <stdio.h>
                                                                             선형 검색
                     03  #include <stdlib.h>                                 요소 개수 : 7
                     04                                                      x[0] : 6
                     05  /*--- 요소의 개수가 n인 배열 a에서 key와 일치하는 요소를 선형 검색 ---*/   x[1] : 4
                     06  int search(const int a[], int n, int key)           x[2] : 3
                                                                             x[3] : 2
                     07  {
                                                                             x[4] : 1
                     08     int i = 0;
                                                                             x[5] : 3
                     09     while( 1 ) {                                     x[6] : 8
                     10       if(i == n)                                     검색값 : 3
                                                           1
                     11         return –1;     /* 검색 실패 */                   3은(는) x[2]에 있습니다.
                     12       if(a[i] == key)
                                                           2
                     13         return i;      /* 검색 성공 */
                     14       i++;
                     15     }
                     16  }
                     17
                     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, sizeof(int));  /* 요소의 개수가 nx인 int형 배열을 생성 */
                     26     for(i = 0; i < nx; i++) {
                     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)




                   100   C 알고리즘
   95   96   97   98   99   100   101   102   103   104   105