学写了一个二分法函数,但是运行时有些间隔的数组中的数查不到
int search(int key,int a[],int len) //经典的二分法查找,需要有序存放的数组
{
int ret = -1;
int right = len-1;
int left = 0;
while(right > left)
{
int mid = (left+right)/2;
if(key == a[mid])
{
ret = mid;
break;
}
else if(a[mid] < key)
{
left = mid; /
}
else
{
right = mid;
}
}
return ret;
}
能够查找到数组中出现的每一个数字的下标
left=mid+1;
right=mid-1; //改一下这两句
mid已经查找过了,改为
left = mid+1;
//
right = mid-1;
能不能说得详细一些,你怎么调用的,错误是什么