Top K 问题

vsign88 2011-02-21 07:14:43
现在有这么个问题请教大家,比如我有很多个整数,然后我想通过抽样的方法计算出比如top 100最大的数,当然这个返回的结果越精确越好,请问各位大侠有什么好方法么 多谢。
...全文
384 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
BiggoFish 2012-12-12
  • 打赏
  • 举报
回复
what is TOP-K Bounded Diversification
pstrunner 2011-02-23
  • 打赏
  • 举报
回复
++
[Quote=引用 1 楼 xuezhiyong1133 的回复:]

多次抽样计算平均值,比较每次抽样获取的平均值的大小,小的就舍去,大的就再取两次结果的平均值,这样应该能取个大概。
[/Quote]
lay_1980 2011-02-23
  • 打赏
  • 举报
回复
std::partial_sort
kon3155 2011-02-23
  • 打赏
  • 举报
回复
楼主不满足堆排序算法的效率?
vsign88 2011-02-23
  • 打赏
  • 举报
回复
关键是这个N不知道 就是说不知道到底有多少个数 如果像3楼说的要排序而又不抽样的话代价太大了 请问各位有啥好想法么
jiannye 2011-02-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lzc52151 的回复:]
看看这个,理论上可行
先求得总体大小n,研究一下分布情况.以均匀分布为例
n个数任取一个是TOP100的概率为100/n,于是第一次取n/100大小的样本,选中其中最大的认为是TOP100.把该数从总体中删除.
n-1个数任取一个是TOP99的概率为99/(n-1),于是第二次取(n-1)/99大小的样本,选中其中最大的认为是TOP99.把该数从总体中删除.
如此反复100次,理论上取得的……
[/Quote]

问题是你这N个数字取最大值的时候还是会有算法的效率问题

用个二叉树算好了还是 二叉树排序完了 然后直接取吧。。。。。。。。
lzc52151 2011-02-22
  • 打赏
  • 举报
回复
看看这个,理论上可行
先求得总体大小n,研究一下分布情况.以均匀分布为例
n个数任取一个是TOP100的概率为100/n,于是第一次取n/100大小的样本,选中其中最大的认为是TOP100.把该数从总体中删除.
n-1个数任取一个是TOP99的概率为99/(n-1),于是第二次取(n-1)/99大小的样本,选中其中最大的认为是TOP99.把该数从总体中删除.
如此反复100次,理论上取得的100个数接近TOP100.
xuezhiyong1133 2011-02-21
  • 打赏
  • 举报
回复
多次抽样计算平均值,比较每次抽样获取的平均值的大小,小的就舍去,大的就再取两次结果的平均值,这样应该能取个大概。

33,010

社区成员

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

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