8e47e42
V2EX  ›  问与答

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

  •  
  •   8e47e42 · Feb 21, 2020 · 2068 views
    This topic created in 2451 days ago, the information mentioned may be changed or developed.
    如题问。有一个 dict,key=名字,value=成绩,取前五,如何在不使用 sort()的情况下:
    取整所有数据的成绩的前五
    先按成绩高到低排列
    再按名字首字母排序

    附加条件:不能用 sort()
    8 replies  •  2020-02-21 14:43:41 +08:00
    micean
    micean
    Feb 21, 2020❤️1
    1
    public PriorityQueue(int initialCapacity, Comparator<? super E> comparator){}

    这个?
    jmc891205
    jmc891205
    Feb 21, 2020 via iPhone
    2
    遍历一遍不就把前五找出来了?
    siyemiaokube
    siyemiaokube
    Feb 21, 2020 via iPhone❤️1
    3
    我觉得不让用某种抽象方法的题目都是 sb 题。
    可以考虑用字典树来完成,本质也是排序的具体实现。
    Ericcccccccc
    Ericcccccccc
    Feb 21, 2020
    4
    遍历
    Ericcccccccc
    Ericcccccccc
    Feb 21, 2020❤️1
    5
    不能用 sort 这个条件相当奇怪, 那去往上找个快排的代码自己实现一个可以吗?

    干这个事情本质不还是排序? (比大小本身不就是一种排序行为吗)
    8e47e42
    8e47e42
    OP
    Feb 21, 2020
    6
    @Ericcccccccc
    @siyemiaokube
    不能用 sort 给的 comments 大概的意思是如果只求最前面 5 个不需要去 sort 整个列表,是真的有点沙雕的要求。。
    lhx2008
    lhx2008
    Feb 21, 2020 via Android
    7
    PRIOTYQUEUE 就行,comparator 写一下
    ym1ng
    ym1ng
    Feb 21, 2020
    8
    应该是 top k 问题的变形?不让排序的话 一般就是用堆来实现了吧(逃
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2099 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 02:46 · PVG 10:46 · LAX 18:46 · JFK 21:46
    ♥ Do have faith in what you're doing.