题目正解
2025-08-17 17:42:11
发布于:广东
0阅读
0回复
0点赞
根据题面描述及题目标签,这是一道很明显的二分查找题,虽然algorithm头文件中也有函数,但手写模板更有感觉。由于题目已经排过序了,且,可以直接开始做。
#include<iostream>
using namespace std;
int n,a[105],x,l,r,mid;
int main(){
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
cin>>x;
l=0,r=n-1;//由于下标从0开始,此处最后一个元素的下标为n-1
while(l<r){//说明还没找到该元素
mid=(l+r)/2;
if(a[mid]==x){
cout<<mid+1;//同理,输出时下标要+1
return 0;
}
else if(a[mid]>x) r=mid;
else l=mid+1;//注意一定要+1,因为该元素也小于x(不然会TLE)
}
cout<<-1;//这里偷了下懒,不想再写判断了
return 0;
}
这里空空如也
有帮助,赞一个