数据流中的中位数
数据流中的中位数
http://www.nowcoder.com/questionTerminal/9be0172896bd43948f8a32fb954e1be1
题目描述
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。
【插入排序】题解里大多数是优先队列!对于代码萌新学到了!真厉害,这里主要是提供一种小白思路,利用插入排序。
class Solution { public: int n=0; int array[1000]; void Insert(int num) { if(n==0) { array[0]=num; n++; return; } int j=n-1; while(j>=0&&array[j]>num) { array[j+1]=array[j]; --j; } array[j+1]=num; n++; } double GetMedian() { if(n%2==0) return (double)(array[n/2]+array[n/2-1])/2; else return (double) array[n/2]; } };