不确定为什么这不会返回搜索到的元素的索引。输入是排序数组,其大小和要查找的元素。
int binarySearch(int a[], int size, int key){
int mid = (size)/2;
if(a[mid] == key){
return mid;
}else if(size ==1 || size ==0){
return -1;
}
if(key<a[mid]){
return binarySearch(a, mid, key);
}else if (key > a[mid]){
return binarySearch(a+(mid), size-mid, key);
}
}
答案 0 :(得分:0)
如果key > a[mid]
,则必须返回mid + binarySearch(a+(mid), size-mid, key)
,因为binarySearch只会看到数组的后半部分,因此会将索引返回到后半部分。