方法一:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long x,a[10005]={0},i;
cin>>x;
for(i=1;i<=1500;i++)
{
cin>>a[i];
if(a[i]==x){
cout<<i;
return 0;
}
}
cout<<-1;
return 0;
}
方法二:递推
#include<bits/stdc++.h>
using namespace std;
long long k,x,y,mid,a[100000]={0};
int f(int l,int r)
{
if(l>r)return 0;
mid=(l+r)/2;
if(a[mid]==k){return 1;}
if(k<a[mid])return f(1,mid-1);
else return f(mid+1,r);
}
int main()
{
cin>>k;
for(int i=1;i<=1500;i++)
cin>>a[i];
x=1;y=1500;
if(f(x,y))cout<<mid;
else cout<<-1;
return 0;
}
方法三:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long x,a[10005]={0},i,mid,l,r;
cin>>x;
for(i=1;i<=1500;i++)
{
cin>>a[i];
l=1;r=1500;
}
while(l<=r)
{
mid=(l+r)/2;
if(a[mid]==x){cout<<mid;return 0;}
if(x<a[mid])r=mid-1;
else l=mid+1;
}
cout<<-1;
return 0;
}
【入门】二分查找
最新推荐文章于 2025-04-30 16:36:16 发布