二分查找
2024-09-28 19:58:51
发布于:安徽
0阅读
0回复
0点赞
这是一道模板题没什么思路可说上代码
#include <bits/stdc++.h>
using namespace std;
int n;
const int N = 105;
int a[N];
int main(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i]; // 输入a数组
}
int target; // 定义目标值
cin >> target;
int l=1,r=n; // 定义左右边界
while(l<=r){
int mid = (l+r)>>1; // 算中间值
if(a[mid]==target){ // 判断如果中间值等于目标值则输出下标然后return 0结束
cout << mid;
return 0;
}else if(a[mid]>target){ //判断如果中间值大于目标值的话则证明目标值在中间值的左边则r=mid-1
r = mid-1;
}else{
l = mid+1; // 否则目标值在中间值的右边则l=mid+1
}
}
cout << -1; // 输出-1则证明该数列不存在目标值输出-1
return 0;
}
这里空空如也
有帮助,赞一个