主要对mid的计算进行改进,未改进之前的计算公式:
改进后的公式:
修改代码后:
int search(int s[],int n,int key)
{
int left,right,mid;
left=0;
right=n-1;
while(left<=right) //查找范围含至少一个元素
{
mid=left+(key-s[left])*(right-left)/(s[right]-s[left]);/*改进*/
if(s[mid]==key)
return mid;
else if(s[mid]>key)
right=mid-1;
else
left=mid+1;
}
return -1;
}