必对题解·数的位置
2026-06-28 15:58:49
发布于:天津
20阅读
0回复
0点赞
一、思路💡
我们可以用一个自定义函数“find”来实现一个二分查找的过程,因为find本身的意思就是“找到”,如果在查找的过程中找到了这个数x,那么直接返回当前位置的下标,如果循环结束,说明没找到,返回-1。
二、代码🖥️
#include<iostream>
using namespace std;
int n,m;
int a[100005];
int find(int x){//find用来查找x(不在查找过程中作过多的讲解)
int l=1,r=n;
int mid;
while(l<=r){
mid=(l+r)/2;
if(a[mid]==x)return mid;//找到了就输出当前的下标
else if(a[mid]>x)r=mid-1;
else l=mid+1;
}
return -1;//如果执行到这说明没找到,返回-1
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=m;i++){
int x;
cin>>x;
cout<<find(x)<<endl;//输出find函数返回的值,提醒:要输出换行
}
return 0;
}
第一次写思路,可能写的不太好,勿喷
这里空空如也








有帮助,赞一个