考慮這個僞代碼:將值添加到優先級隊列時,何時對值進行排序?
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