主要对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; }