折半查找有序表(4,6,10,12,20,30,50,70,88,100)。若查找表中元素58,则它将依次与表中哪些元素比较大小,查找结果失败()
int BinSearch(vector<int>R, int key)
{
int low = 0, high = R.size()-1, mid;
while (low <= high)
{
mid = low + (high-low)/2;
//或是mid = low + ((high - low)>>1)
//采用mid = (low + high)/2有可能导致溢出
printf("查找的元素为%d,索引为%d\n",R[mid],mid);
if (R[mid] == key)
{
return mid + 1;
}
if (R[mid] > key)
{
high = mid - 1;
}
else
{
low = mid + 1;
}
}
return 0;
}