반응형

/* 이진검색 구현 및 예제 코드 */

 

#include <stdio.h>

 

int bsearch(int *arr, int what, int first, int last)

{

int mid;

if ((last - first) < 2)

return arr[first] == what || arr[last] == what;

mid = first + (last - first) / 2;

if (arr[mid] == what)

return 1;

if (arr[mid] > what)

return bsearch(arr, what, first, mid - 1);

return bsearch(arr, what, mid + 1, last);

}

 

/* 정수형 배열에서 정수를 검색하는 함수 */

int search(int *arr, int size, int what)

{

return bsearch(arr, what, 0, size - 1);

}

 

 

/* Testing Code */

void main()

{

int i;

int a[100]; 

 

for (i = 0; i < 100; i++)  // 정수 배열 초기화 (0~99)

a[i] = i;

 

printf("%s!\n", search(a, 100,  99) ? "찾음" : "실패");  /* 찾음! */

printf("%s!\n", search(a, 100, -1) ? "찾음" : "실패");   /* 실패! */

printf("%s!\n", search(a, 100, 0) ? "찾음" : "실패");    /* 찾음! */

}

반응형

+ Recent posts