如何从数组当中找出最大的前10个数

如何从数组当中找出最大的前10个数
全部评论
建立大小为10的最小堆,先用数组前十个数建堆,然后调整为最小堆,在用之后的数与堆顶进行比较,比堆顶小的就过,比堆顶大的就替换,再调整,就好了
点赞 回复 分享
发布于 2017-06-07 09:39
import java.util.PriorityQueue; public class 优先队列 { public static void main(String[] args) { // 最小堆 PriorityQueue<Integer> q = new PriorityQueue<>(10); for (int i = 0; i < 1000; i++) { int a=(int) (Math.random()*1000); if (q.isEmpty() || q.size() < 10) { q.offer(a); } else { if (q.peek() < a) { q.poll(); q.offer(a); } } } System.out.println(q); } }
1 回复 分享
发布于 2017-06-07 17:48
用个大小为10的堆处理
1 回复 分享
发布于 2017-06-07 08:51
数组的规模?
点赞 回复 分享
发布于 2017-06-07 08:46
类似快排怼一下就好了,可以参考,n个数,选第m大
点赞 回复 分享
发布于 2017-06-08 02:40
快速选择
点赞 回复 分享
发布于 2017-06-08 00:06
小数据量partition,大数据量建堆
点赞 回复 分享
发布于 2017-06-07 21:27
1.堆排吧2,如果数据量太大,可以先选10个排序,其他数据从硬盘读进去比较替换类似插入排序
点赞 回复 分享
发布于 2017-06-07 13:18
百度 TopK算法?
点赞 回复 分享
发布于 2017-06-07 11:37
位图不解释
点赞 回复 分享
发布于 2017-06-07 11:25
quick select
点赞 回复 分享
发布于 2017-06-07 08:52

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务