常用排序算法-二分法
整数二分 method 在一个区间内部去区分边界,在选择区间中,要选择答案所在区间,每一次都会将答案覆盖掉。 当区间长度是1的时候区间里的数一定是答案。 Example #include <iostream> using namespace std; const int N = 100010; int n,m; int q[N]; int main() { scanf("%d%d",&n,&m); for (int i = 0; i < n; i ++) scanf("%d",&q[i]); while(m --) { int x; scanf("%d", &x); int l = 0, r = n - 1; while(l < r) { int mid = l + r >> 1; if (q[mid] >= x) r = mid; else l = mid + 1; } if (q[l] != x) cout << "-1 -1" << endl; else { cout << l << ' '; int l = 0,r = n - 1; while(l < r) { int mid = l + r + 1 >> 1; if (q[mid] <= x) l = mid; else r = mid - 1; } cout << l << endl; } } return 0; }