不是VIP会员,不能显示答案

题目解答

题目:
(中位数)给定n(n为奇数且小于1000)个整数,整数的范围在0~m(0 < m < 2^31)之间,请使用二分法求这n个整数的中位数。所谓中位数,是指将这n个数排序之后,排在正中间的数。(第五空2分,其余3分)
#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 (    rbound>lbound    ) { 
        mid = (lbound + rbound) / 2; 
             count=0     ; 
        for (i = 0; i < n; i++) 
            if (     mid<x[i]     ) 
                     count++     ; 
        if (count > n / 2) 
            lbound = mid + 1; 
        else 
                 rbound=mid     ; 
    } 
    cout << rbound << endl; 
    return 0; 
} 
考点:
分析:
解答:
评论:
老师: