二分法又叫折半寻找,每次寻找把包括mid前面或者后面的数都不要了缩小范围进而找出要找的值,左边不要还是右边不要具体看要找的数和Mid的大小关系,题目说了是递增数列,所以不用排序了。
int Search_Bin(SSTable T, KeyType k){
int head=1,tail=T.length,mid;
while(head<=tail){
mid=(head+tail)/2;
if(k==T.R[mid].key){
return mid;
}else if(k<T.R[mid].key){
tail=mid-1;//递增数列,比要找的数大,说明数在mid左边,所以包括mid右边所有的数都是比k大的
//都要不要了
}else if(k>T.R[mid].key){
head=mid+1;//同理,mid比要找的数小,肯定在k在mid的右边,所以包括mid右边所有的数不要;
}
}
return 0;
}