package kitsion.util;
/*** priorityqueue class implemented via the binary heap.
*/public class priorityqueueextends abstractcollection
implements queue
/*** construct an empty priorityqueue with a specified comparator
* * @param c
*/public priorityqueue(comparator<? super anytype> c)
/*** construct a priorityqueue from another collection
* * @param coll
*/public priorityqueue(collection<? extends anytype> coll)
/*** returns the number of items in this priorityqueue
*/public int size()
public void clear()
/*** returns an iterator over the elements in this priorityqueue
*/public iteratoriterator()
public anytype next()
public void remove() };}
/*** returns the smallest item in the priority queue
*/public anytype element()
/*** adds an item to this priorityqueue.
*/public boolean add(anytype x)
/*** removes the smallest item in the priority queue.
*/public anytype remove()
/*** 詳細註解: percolatedown的乙個引數指示空結點的位置,然後空結點中項被移出,開臺向下過濾,
* 當沒有左孩子,迴圈結束,因為偶數大小的堆裡的最後乙個結點是僅有乙個子結點,所以還要在向下過濾 中,進行測試.
* * @param hole
*/public void percolatedown(int hole)
array[hole] = tmp;
}/**
* 逆序採用向下過濾策略,構造有序堆
*/public void buildheap()
// number of elements in heap
private int currentsize;
// the heap array
private anytype array;
private comparator<? super anytype> cmp;
private static final int default_capacity = 100;
/*** internal method to extend array
*/private void doublearray()
/*** compares lhs and rhs using comparator if provided by cmp, or the default
* comarator
* * @param lhs
* @param rhs
* @return
*/private int compare(anytype lhs, anytype rhs)
}
堆 神奇的優先佇列 上
堆是什麼?是一種特殊的完全二叉樹,就像下面這棵樹一樣。有沒有發現這棵二叉樹有乙個特點,就是所有父結點都比子結點要小 注意 圓圈裡面的數是值,圓圈上面的數是這個結點的編號,此規定僅適用於本節 符合這樣特點的完全二叉樹我們稱為最小堆。反之,如果所有父結點都比子結點要大,這樣的完全二叉樹稱為最大堆。那這一...
堆 神奇的優先佇列 上 經典
原文章 堆是什麼?是一種特殊的完全二叉樹,就像下面這棵樹一樣。有沒有發現這棵二叉樹有乙個特點,就是所有父結點都比子結點要小 注意 圓圈裡面的數是值,圓圈上面的數是這個結點的編號,此規定僅適用於本節 符合這樣特點的完全二叉樹我們稱為最小堆。反之,如果所有父結點都比子結點要大,這樣的完全二叉樹稱為最大堆...
啊哈!演算法 演算法11 堆 神奇的優先佇列(上)
堆是什麼?是一種特殊的完全二叉樹,就像下面這棵樹一樣。有沒有發現這棵二叉樹有乙個特點,就是所有父結點都比子結點要小 注意 圓圈裡面的數是值,圓圈上面的數是這個結點的編號,此規定僅適用於本節 符合這樣特點的完全二叉樹我們稱為最小堆。反之,如果所有父結點都比子結點要大,這樣的完全二叉樹稱為最大堆。那這一...