• 全部
  • 问答

编程问题,谢谢

libralibra 2008-04-09 08:49:21
有一数列如下,求其中位数(中间那个数),例如长度为9(有时候也为偶数),就是求第五个数

1 2 2 3 5 5 5 5 7

红的就是中位数了.
现在问题是,我得到了数的个数,例如
1-1个
2-2个
3-1个
4-0个
5-3个
6-0个
7-1个

我得到的数列是1 2 1 0 3 0 1
怎么由这些个数求出中位数?
谢谢,目前没有头绪中
...全文
64 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
DarRen_ 2008-04-10
那如果数列的长度是偶数呢?
回复
jmulxg 2008-04-10
首先求总数,然后求一半的位置在哪个组,就可以求出来了
回复
oo 2008-04-09
1,扫一遍,得到总数
2,再扫一遍,找到(总数+1)/2的那个数。

假设数列放到 a[N]中

int Count = 0;
for(i=0;i<N;i++)
{
Count += a[N];
}
int CurCount = 0;
for(i=0;i<N;i++)
{
CurCount += a[N];
if(CurCount >= (Count+1)/2) //got it
{
printf("result is %d\n", i+1);
break;
}
}
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-04-09 08:49
社区公告
暂无公告