Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
74188 | 陈路垚 | 二分查找 | C++ | 通过 | 100 | 18 MS | 640 KB | 639 | 2023-05-20 17:23:35 |
#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; int makabaka=bs(0,n-1,x); if(makabaka==-1) cout<<-1; else cout<<makabaka+1; return 0; }