20221221 二分查找
题目【深基12.例1】查找
首先,不用算法的话这道题会超时,二分查找(折半查找算法)思路就写在代码里面了
AC代码
#include <bits/stdc++.h>
using namespace std;
int a[1000010];
int main(){
int n,m;
int x;
cin>>n>>m;
for(int i = 1;i<=n;i++)
{
cin>>a[i];
}
while(m--)
{
cin>>x;
int l = 1,r = n;//左边和右边
while(l < r)//如果左边任然小于右边 进入循环
{
int mid = l + r >> 1; //中间数
if(a[mid] >= x){//如果中间数 比 要找的数大
r = mid;//把右边缩到中间
}else{//否则
l = mid + 1;//把左边的数缩到中间
}
}
if(a[l] == x) cout<<l<<" ";
else cout<<-1<<" ";
}
return 0;
}