gpt4 book ai didi

java - 优先级队列默认排序

转载 作者:行者123 更新时间:2023-12-01 22:25:24 25 4
gpt4 key购买 nike

Comparator<struc> cmp= new Comparator<struc>() {
public int compare(struc e1, struc e2) {
return e1.x - e2.x;
}
};

struc 是点结构。当我提供:

(3,1)(3,2)(3,3)(3,4)

q 给我:

(3,1)(3,4),(3,3)(3,2)

当我提供时:

(3,1)(3,3)(3,2)(3,4)

它给了我:

(3,1)(3,4),(3,2)(3,3).

这是什么逻辑?

既然没有比较y,它是否应该只给出key_in序列的顺序?当我检查 API 时,它告诉我“基于优先级堆的无界优先级队列...该队列的头部是相对于指定顺序的最小元素。如果多个元素被绑定(bind)为最小值,则头部是一个这些因素中——联系被任意打破。”

谁能帮忙解释一下吗?

最佳答案

此处的顺序未定义,因为所有点都相互关联,因为它们的x坐标值是相同的。如果您希望具有相同的顺序,则应通过修改 compare() 实现来强制执行此操作,以将它们的 y 坐标值也考虑在内。

而且,即使由于某种原因顺序相同,程序依赖未定义的行为来保证其正确性也是不正确的。

关于java - 优先级队列默认排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28901412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com