求现成的java排序topN算法

职场一叶之舟 2014-12-09 12:17:33
一个待排序list
以前是用Collections.sort全量排序再截取topN
太慢了 只想取topN 有没有什么现成的方法?
...全文
326 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
a12939026 2014-12-09
  • 打赏
  • 举报
回复
哪有楼上说的这么复杂。 TOPN的最经典解法不就是一个小根堆么。
wyc_ 2014-12-09
  • 打赏
  • 举报
回复
没见过线程的方法,要自己实现的话可以考虑一下这样实现:对list平均分为N组,每组内进行排序,然后把每组的最大的数字取出来建堆,每次把堆中最大的取出后再把该组内的下一个最大值放入堆中调整堆,重复以上操作选满topN个为止,这种方法相对比较麻烦。如果list中数字的范围不是很大,可以采用哈希方法用空间换时间,非常简单。

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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