考虑这个伪代码:将值添加到优先级队列时,何时对值进行排序?
PriorityQueue <Integer> pq = new PriorityQueue(new Comparator()
{
public int compare(Object o1, Object o2)
{
Integer e1 = (Integer)o1;
Integer e2 = (Integer)o2;
if (e1 > e2) {return -1;}
if (e2 > e1) {return 1;}
return 0;
}
});
pq.add(4);
pq.add(7);
pq.add(5);
pq.add(2);
pq.add(9);
现在我想知道,在运行时间什么时候确实队列运行compare()方法?我以为,它会按照这个顺序:
我)首先,数字4,7,5,2,9将被添加到队列的顺序
II)则优先级队列使用的比较方法排序的值
换句话说,该值被首先插入到队列中。然后他们被排序。这个想法是否正确?还是值被排序,因为他们被添加到队列?
这是哪一种语言?你在用什么框架? –
对,我的坏。它是Java – User95
这些值必须在添加时排序。否则,队列应该如何知道你已经完成添加元素? – JimmyB