gpt4 book ai didi

java - 如何按降序将值插入复杂度为 O(n log n) 的 LinkedList 中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:18:36 25 4
gpt4 key购买 nike

我必须实现自定义 ProperyQueue,并且我决定使用 LinkedList 作为我的值的容器。插入的顺序是高值(value) - 低优先级。因此,队列中的值按降序排列,并且随着元素的值越小,优先级越高。如何使用复杂度为 O(n log n) 的插入方法?

这是优先队列:

public class PriorityQueue<E extends Comparable<? super E>> implements Comparable {
private LinkedList<E> queue;
private int size;


public PriorityQueue(int size) {
this.size = size;
queue = new LinkedList<>();
}

public PriorityQueue() {
this(50000);
}

public void insert(E value) {
if (queue.size() == size) {
try {
throw new SizeLimitExceededException();
} catch (SizeLimitExceededException e) {
e.printStackTrace();
}
}
if (value == null) {
throw new NullPointerException();
} else {
queue.add(value);
size--;
}
Collections.sort(queue);
Collections.reverse(queue);
}

}

我的插入方法的复杂度是 O(n pow(n)) 我该如何改进它,我应该使用什么算法?

最佳答案

为什么不直接使用 TreeSet
各个元素的 compareTo 方法应该首先比较优先级(返回负值以获得更高的优先级),然后对其他属性进行一些比较以使它们唯一。

关于java - 如何按降序将值插入复杂度为 O(n log n) 的 LinkedList 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37114874/

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