我想學習Java和我爲此示例 - 難倒我無法找到問題的關鍵是什麼關鍵 - 優先級隊列
public class OrderedArrayMaxPQ<Key extends Comparable<Key>> {
private Key[] pq; // elements
這是優先級隊列的例子..我從http://algs4.cs.princeton.edu/24pq/OrderedArrayMaxPQ.java.html得到它 我認爲一個優先級隊列應該有一個數據+一個優先級值。我不確定這些人是如何做到的。
public class OrderedArrayMaxPQ<Key extends Comparable<Key>> {
private Key[] pq; // elements
private int N; // number of elements
// set inititial size of heap to hold size elements
public OrderedArrayMaxPQ(int capacity) {
pq = (Key[]) (new Comparable[capacity]);
N = 0;
}
public boolean isEmpty() { return N == 0; }
public int size() { return N; }
public Key delMax() { return pq[--N]; }
public void insert(Key key) {
int i = N-1;
while (i >= 0 && less(key, pq[i])) {
pq[i+1] = pq[i];
i--;
}
pq[i+1] = key;
N++;
}
需要注意的是,如果您打算在生產環境中使用此代碼,則應該意識到陣列構建行上將存在未經檢查的轉換警告,這是不可避免的,但我會建議使用'@SuppressWarnings '註釋。另外(也可能更重要的是),'delMax()'方法無法清空不再使用的引用,這可能會阻止從隊列中刪除的密鑰被垃圾收集。 –