您的位置:首页 > Web前端

剑指offer—数据流中的中位数

2015-10-12 23:54 337 查看
华电北风吹

天津大学认知计算与应用重点实验室

日期:2015/10/12

题目描述

如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。

解析:利用插入排序的思想,将进流中的数据排序。寻找中位数。

class Solution
{
public:
vector<int> v;
void Insert(int num)
{
v.push_back(num);
int i=v.size()-2;
while(i>=0&&v[i]>num)
{
v[i+1]=v[i];
i--;
}
v[i+1]=num;
}

double GetMedian()
{
int length=v.size();
if((length&1)==1)
return v[length/2]*1.0;
else
return (v[length/2]+v[length/2-1])*1.0/2;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: