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