中位数求解

kb43446 2017-07-27 09:22:17
有20万个数据,都处于1--255之间,取出中位数,直接排序取出处理器负担太重,想减轻处理器的负荷,怎么简化算法处理呢?,最好误差小一点,万分感谢
...全文
352 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
潇湘如梦 2017-08-02
  • 打赏
  • 举报
回复
数字有范围就好做,弄个255大小的一位数组,遍历这20万个数字,统计每个数字出现次数,最后遍历这个一维数组,将每一位相加,如果加上某个数的出现次数时,和数大于或等于100001,那么这个数就是中位数,如果和数等于100000,那么当前这个数和下一个数的平均值就是中位数。
戴小码 2017-08-01
  • 打赏
  • 举报
回复
<b>数组的效率是最高的,这个完全可以用数组,再用Arrays.sort()排下序就可以了,这个速度已经非常快了,就你这点数据量完全没事。
kb43446 2017-07-28
  • 打赏
  • 举报
回复
引用 5 楼 windowsoahil 的回复:
这是典型的桶排序场景,即数据量很大但数据取值范围很小。基本思路就是开个255个元素的数组,a[i]表示有多少个i。然后从一端开始收集,直到元素数量不小于总数量一半为止。
受教了·
解开者 2017-07-28
  • 打赏
  • 举报
回复
这是典型的桶排序场景,即数据量很大但数据取值范围很小。基本思路就是开个255个元素的数组,a[i]表示有多少个i。然后从一端开始收集,直到元素数量不小于总数量一半为止。
MeetHope 2017-07-28
  • 打赏
  • 举报
回复
这个就得用到计算机数据结构中,几种排序的内容了。简单排序,堆排序,冒泡排序,快速排序,希尔排序,直接插入排序,二路归并排序。你可以具体去比较他们的效率。然后选择一种。再具体去实现
kb43446 2017-07-27
  • 打赏
  • 举报
回复
kb43446 2017-07-27
  • 打赏
  • 举报
回复
引用 1 楼 soton_dolphin 的回复:
20万个 1字节的数据,排序也不会对处理器有什么负担,就算你的处理器是奔三都没问题
不是电脑处理器,我同学的做的微终端,芯片是430
soton_dolphin 2017-07-27
  • 打赏
  • 举报
回复
20万个 1字节的数据,排序也不会对处理器有什么负担,就算你的处理器是奔三都没问题

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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