提交时间:2024-01-25 09:33:38

运行 ID: 127577

#include<iostream> using namespace std; int arr[10005],n,m; int binary_search(int start, int end, int key) { int ret = -1; // 未搜索到数据返回-1下标 int mid; while (start <= end) { mid = start + ((end - start) >> 1); // 直接平均可能会溢出,所以用这个算法 if (arr[mid] < key) start = mid + 1; else if (arr[mid] > key) end = mid - 1; else { // 最后检测相等是因为多数搜索情况不是大于就是小于 ret = mid; break; } } return ret; // 单一出口 } signed main(){ cin>>n; for(int i=1;i<=n;i++) cin>>arr[i]; cin>>m; cout<<binary_search(1,n,m); return 0; }