#include<bits/stdc++.h>
using namespace std;
int a[]= {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30};
int main()
{
int l=sizeof(a)/sizeof(int);
int m;
while(cin>>m) //输入需要查询的数
{
int start=0,endd=l; //查找的范围
while(start<=endd){
int c1=start+(endd-start)/3;//较小的三分点
int c2=endd-(endd-start)/3; //较大的三分点
// cout<<c1<<" * "<<c2<<endl;
if(a[c1]==m){ //等于左边的三分点的数值的情况
cout<<c1<<endl;break;
}
else if(a[c1]>m){ //如果比左边的三分点的数值还小
endd=c1-1;
}
else if(a[c2]==m){ //等于右边的三分点的数值的情况
cout<<c2<<endl;break;
}
else if(a[c2]<m){ //如果比右边的三分点的数值还小
start=c2+1;
}
else{ //如果在两个三分点之间
start=c1+1;endd=c2-1;
}
}
}
}
三分搜索代码
最新推荐文章于 2022-12-18 10:23:13 发布