#include<iostream>
using namespace std;
int s[12] = { 1,2,2,3,3,4,4,4,5,5,11,12 };
int bin_search(const int x, int l, int r){
int mid;
while(l<r){
mid = l+(r-l)/2;
if(s[mid]==x)r=mid;
else if(s[mid]<x)l=mid+1;
else r = mid-1;
}
return r;
}
int main(){
int x;
while(cin>>x){
cout<<bin_search(x,0,12)<<endl;
}
return 0;
}
切记一定要注意l与r的更新,不能直接赋值为mid,否则极大可能会陷入死循环!
《编程珠玑》---编写正确的二分搜索程序
最新推荐文章于 2018-10-01 12:59:24 发布