Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
74176 | 陈路垚 | 二分查找 | C++ | 解答错误 | 0 | 4 MS | 304 KB | 580 | 2023-05-20 17:22:18 |
#include<iostream> using namespace std; int a[100005]; int bs(int left, int right, int x){ if(left > right) return -1; // 找不到,返回-1 int mid = (left + right) / 2; if(a[mid] == x) return mid; // 找到,返回下标 else if(a[mid] > x) return bs(left, mid - 1, x); // 在左半边查找 else return bs(mid + 1, right, x); // 在右半边查找 } int main(){ int n,x; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; cin>>x; cout<<bs(0,n-1,x)+1<<endl; return 0; }