简单题,就不多说了,不会的对答案,或者评论也行,哈哈
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int a[1000010];
int tag;
void kfind(int a[],int l,int r,int x){
if(l>r)
return ;
int k = (l+r)/2;
if(a[k]==x){
cout<<k<<endl;
tag = 1;
}
else if(x>a[k])
kfind(a,k+1,r,x);
else
kfind(a,l,k-1,x);
}
int main()
{
ios::sync_with_stdio(false);
int n,m;
cin>>n>>m;
for(int i=0; i<n; i++){
cin>>a[i];
}
for(int i=0; i<m; i++){
int x;
cin>>x;
tag = 0;
kfind(a,0,n-1,x);
if(!tag)
cout<<"-1"<<endl;
}
return 0;
}
本文深入探讨了二分查找算法的实现,通过一个简洁的C++代码示例,讲解了如何在有序数组中查找特定元素的位置。代码首先同步标准输入输出,然后读取数组大小和查询次数,接着输入数组元素,最后进行多次查询,使用递归方式实现二分查找,如果找到目标值则输出其索引,否则输出-1。
669

被折叠的 条评论
为什么被折叠?



