描述
二分查找 又叫 折半查找。它采用的是"分治策略"。
给出非降序排列的 n 个整数,查找是否存在某个整数,如果存在,则输出其位置。
输入描述
第一行是一个整数 n(0<n≤200000) 表示整数的个数。
接下来是 n 个整数,每个整数之间用一个空格分隔。
接下来一行是一个整数 q,表示要查找的关键字个数。
接下来 q 个整数,表示要查找的关键字 key 。每个 key 之间一个空格分隔。
输出描述
对每个要查找的 key,输出一行结果。
如果找到,输出 key 在这 n 个整数的位置,位置从 0 开始编号。
如果找不到,则输出 Not Found文章来源:https://www.toymoban.com/news/detail-536218.html
一道简单的oj题,有个注意事项,题目要求位置编号从0开始,所以存入数组的时候要从[0]开始存,话不多说,上代码文章来源地址https://www.toymoban.com/news/detail-536218.html
#include<iostream>
using namespace std;
int a[200010],b[200010];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
int q;
cin>>q;
for(int j=0;j<q;j++)
cin>>b[j];
//开始查找,循环每一个k
for(int k=0;k<q;k++){
int L=0;
int R=n-1;
while(L<=R){
int mid=L+(R-L)/2;
if(a[mid]>b[k])
R=mid-1;
else if(a[mid]<b[k])
L=mid+1;
else{
cout<<mid<<endl;
break;
}
}
if(L>R)
cout<<"Not Found"<<endl;
}
return 0;
}
到了这里,关于二分查找--查找整数位置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!