【发布时间】:2014-07-17 22:03:15
【问题描述】:
我有一个包含大量元素的数组——超过 2,000,000 个。我需要获得最高(或最低)排名的 300 个元素。因此,每当我到达数组的第一个最高(或最低)300 个元素时,就返回它们。目前Arrays.sort用于整个数组,然后返回最高(或最低)排名的元素。
e.g.:{1,2,3,4,5,6,7,8,9}我要获取最高的3个元素;我需要:{9,8,7}
对这个有什么建议吗?
编辑
迄今为止发现的最佳资源,包含不同解决方案的研究/比较:
http://www.michaelpollmeier.com/selecting-top-k-items-from-a-list-efficiently-in-java-groovy/
文章源代码:
【问题讨论】:
-
查看其他sort methods
-
您只想对前 300 个元素进行排序?还是您只想要最高/最低的 300 个?
-
有
Arrays#sort(Object[] array, int fromIndex, int toIndex)。阅读您正在使用的类/库上的 javadoc 和可用方法。 -
@Rossiar 300 最高/最低
-
@LuiggiMendoza - 我阅读了 javadoc,我的解释是错误的......我实际上只需要数组的前 N 个最高元素。
标签: java arrays algorithm sorting