第一行,一个整数n,代表数组元素个数(n <= 1000000) 第二行,n个数,代表数组的n个递增元素(1<=数组元素值<=100000000) 第三行,一个整数x,代表要查找的数(0<=x<=100000000) |
常规做法(也是直接超时好吧)
#include<bits/stdc++.h>
using namespace std;
int n,a[1000005],x;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
cin>>x;
for(int i=1;i<=n;i++)
{
if(a[i]==x){
cout<<i;
return 0;
}
}
cout<<-1;
return 0;
}
样例 10 |
也是直接时间复杂的直接1/2好吧
#include<bits/stdc++.h>
using namespace std;
int n,a[1000005],x,lt,rt,mid;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
cin>>x;
lt=1,rt=n;
while(lt+1<rt)
{
mid=(lt+rt)/2;
if(a[mid]>x){
rt=mid;
}
if(a[mid]<x){
lt=mid;
}
if(a[mid]==x){
cout<<mid;
return 0;
}
}
cout<<-1;
return 0;
}
下期出更详细教程(先理解哈)