五、完善程序-2
(中位数)给定 n(n 为奇数且小于 1000)个整数,整数的范围在0~m(0 <m< 2^31)之间,请使用二分法求这 n 个整数的中位数。所谓中位数,是指将这 n 个数排序之后,排在正中间的数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <iostream> using namespace std; const int MAXN = 1000; int n,i,lbound,rbound,mid,m,count; int x[MAXN]; int main() { cin >> n >> m; for(i = 0; i < n; i++) cin >> x[i]; lbound = 0;rbound = m; while(①) { mid=(lbound+rbound)/2; ②; for(i = 0; i < n; i++) { if(③) ④; } if(count > n/2) lbound = mid + 1; else ⑤; } cout << rbound << endl; return 0; } |
