-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
在N(1<=N<10,000且N为奇数)个数中,找到中位数。
输入
-
第1行:N
第2至N+1行:每行是一个整数
输出
- 第一行:中位数 样例输入
-
5 2 4 1 3 5
样例输出
3
经典问题。。曾经的面试题。。群里大神推荐的做法是。维护两个堆,一个是大根堆,一个是小根堆。使两个堆的大小相差不超过一。
这个方法不明觉历。
以下库函数代码。
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<assert.h> #include<ctype.h> #include<stdlib.h> using namespace std; int main(){ int n; int a[100100]; scanf("%d",&n); int i; for(i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+1+n); printf("%d",a[(n+1)/2]); return 0; }