哪位高人可以由浅入深的讲解一下 Top k查询算法

vsign88 2010-12-02 02:34:52
如题,本人对这个算法完全不懂可是手头又有个project要做,想请教谁知道这个算法的讲解一下,越详细越好,多谢啦~
...全文
342 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
AAA20090987 2010-12-03
  • 打赏
  • 举报
回复
这个问题已经被讨论过无数次了

方法1:先用数组的前K个元素建立一个小根堆,然后遍历整个数组,如果第i个元素大于小根堆的根,就对小堆进行弹出操作,再把这个元素加入小根堆中,最后将小根堆中的元素排序。

方法2:用快速排序的推论求出第K大的元素,再将数组中小于它的元素取出,并排序。
Afzarka 2010-12-03
  • 打赏
  • 举报
回复
http://blog.csdn.net/pennyliang/archive/2009/10/08/4642641.aspx
yui 2010-12-02
  • 打赏
  • 举报
回复
查询top k,也就是要找排序后的前k项。

最简单的做法,就是对整个数组做一次完整的排序,然后从第0项开始输出,直到第k项终止。

但这样做,对第k项及其以后的元素的排序是多余的,因为要求只是查询前k项。如果整个数组有N个元素,而且N远远大于k,那么这样的做法效率很低。

所以,查询top k一般是采用堆排序的思想。所以,学会这个算法首先要熟悉堆排序算法,否则不容易明白。

另一道题是查询第k项,这又不一样了,应用的是快速排序的思想,前置知识是快速排序算法。

Oo纳兰筱DoO 2010-12-02
  • 打赏
  • 举报
回复
等待高手,学习一下
yaoweijq 2010-12-02
  • 打赏
  • 举报
回复
top k查询?何意?
不如详细描述下需求

33,006

社区成员

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

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