编程问题,谢谢

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
怎么由这些个数求出中位数?
谢谢,目前没有头绪中
...全文
119 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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;
}
}

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧