题目:
给一个严格递增数列,函数int Search_Bin(SSTable T, KeyType k)用来二分地查找k在数列中的位置。
函数接口分析:
int Search_Bin(SSTable T, KeyType k)
其中T是有序表,k是查找的值。
题目分析:
对于有序数组(包括有序数组的旋转形式)而言,二分查找永远是好的选择。有一句话叫“二分查找:思路很简单,细节是魔鬼”,所以建议大家多回顾回顾二分。有关二分的文章有很多,这里就不赘述了,希望了解的小伙伴可以去查查。
题目解答:
int Search_Bin(SSTable T, KeyType k){
int l=0,r=T.length;
while(l<r){
int mid=(r-l)/2+l;
int temp=T.R[mid].key;
if(temp<k){
l=mid+1;
}else {
r=mid;
}
}
return T.R[l].key==k?l:0;
}