给定n(n为奇数且小于1000)个整数,整数的范围在0~m(0<m<2^31)之间,请使用二分法求这n个整数的中位数。所谓中位数,是指将这n个数排序之后,排在正中间的数。
输入
第一行为两个整数n,m
第二行为n个整数,中间空格隔开
输出
输出这n个整数的中位数
输入样例
7 10000
100 10 50 30 40 70 90
输出样例
50
#include <iostream> using namespace std; const int MAXN = 100; 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(____(1)_______){ mid=(lbound+rbound)/2; ______(2)_______ for(i=0;i<n;i++) if(_____(3)_____) ______(4)________ if(count>n/2) lbound=mid+1; else _____(5)_____ } cout<<rbound<<endl; }