#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方法中,您是否想要在其他if-ifs中使用「return bsearch(a,n ..)」? –
應該是'返回bsearch(a,n,lo,mid);',其他同上。如果找不到,則不指定條件。 – BLUEPIXY