算法:分治
思路:
①先从数列A中间开始找,如果找到,输出答案
②把数列从中间分裂成两个数列A1和A2
③goto① 数列改为A1和A2
以上
代码如下
#include<iostream>
#include<cstdlib>
int n,a[23333],s;
using namespace std;
void find(int l,int r)
{
if(l>r)return;
int k=(l+r)/2;
if(s==a[k]){cout<<"I find it in the "<<k<<"th!";exit(0);}
if(a[k]>s)find(l,k-1);
else find(k+1,r);
}
int main(void)
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
cin>>s;
find(1,n);
cout<<"I can't find it...;_;";
}