#include <stdio.h>
int bsearch(int a[], int n, int lo, int hi) {
int mid;
mid = (hi + lo)/2;
if(a[mid] == n)
return 1;
else if(a[mid] > n)
bsearch(a, n, lo, mid);
else
bsearch(a, n, mid, hi);
return 0;
}
int main(void) {
int n, a[7] = {2, 4, 5, 67, 70, 80, 81};
int hi = 6, lo = 0, j;
scanf("%d", &n);
j = bsearch(a, n, lo, hi);
if(j)
printf("Found");
else
printf("Not Found");
return 0;
}
나는이 결과를 얻고 왜입력 : 5 출력 : 찾을 수 없음바이너리 검색 구현의 문제점은 무엇입니까?
사람이 말해 줄래?
stdlib.h에 동일한 이름의 이진 검색이 있다는 것을 알고 계십니까? http://www.cplusplus.com/reference/cstdlib/bsearch/ – Paulpro
bsearch 메서드에서 "return bsearch (a, n ..)"를 else-ifs에 넣으시겠습니까? –
은'return bsearch (a, n, lo, mid);'이어야합니다. 발견되지 않는 조건은 지정되지 않습니다. – BLUEPIXY