如何从数组当中找出最大的前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

相关推荐

天降大厂offer:想从事前端就放前端的技术栈,然后项目描述,还有项目做了什么内容,使用了什么技术解决了什么问题优化了什么性能。然后头像可以不要,在读也可以不要,还有bg的话就不要放课程,写哪个学校什么本科,还有绩点排名(如果高的话),然后就是技术栈写好一点,接下来就是项目(有实习就写实习,没有就到项目),项目放两个好一点的,自己包装一下,然后有参加什么竞赛放两个就好了,接下来就是靠你自己了,毕竟211还是很难容易找的,不像我们学院本
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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