Java 中,不让用 sort()的情况下如何按照多个指标排布一个 dict 当中的前 n 个?

2020-02-21 09:32:32 +08:00
 8e47e42
如题问。有一个 dict,key=名字,value=成绩,取前五,如何在不使用 sort()的情况下:
取整所有数据的成绩的前五
先按成绩高到低排列
再按名字首字母排序

附加条件:不能用 sort()
1436 次点击
所在节点    问与答
8 条回复
micean
2020-02-21 09:39:17 +08:00
public PriorityQueue(int initialCapacity, Comparator<? super E> comparator){}

这个?
jmc891205
2020-02-21 10:25:13 +08:00
遍历一遍不就把前五找出来了?
siyemiaokube
2020-02-21 13:35:53 +08:00
我觉得不让用某种抽象方法的题目都是 sb 题。
可以考虑用字典树来完成,本质也是排序的具体实现。
Ericcccccccc
2020-02-21 13:37:22 +08:00
遍历
Ericcccccccc
2020-02-21 13:38:29 +08:00
不能用 sort 这个条件相当奇怪, 那去往上找个快排的代码自己实现一个可以吗?

干这个事情本质不还是排序? (比大小本身不就是一种排序行为吗)
8e47e42
2020-02-21 13:42:32 +08:00
@Ericcccccccc
@siyemiaokube
不能用 sort 给的 comments 大概的意思是如果只求最前面 5 个不需要去 sort 整个列表,是真的有点沙雕的要求。。
lhx2008
2020-02-21 13:47:38 +08:00
PRIOTYQUEUE 就行,comparator 写一下
ym1ng
2020-02-21 14:43:41 +08:00
应该是 top k 问题的变形?不让排序的话 一般就是用堆来实现了吧(逃

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/646267

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX