優先佇列 上

2021-08-29 10:35:12 字數 1901 閱讀 1808

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 堆 神奇的優先佇列(上)

堆是什麼?是一種特殊的完全二叉樹,就像下面這棵樹一樣。有沒有發現這棵二叉樹有乙個特點,就是所有父結點都比子結點要小 注意 圓圈裡面的數是值,圓圈上面的數是這個結點的編號,此規定僅適用於本節 符合這樣特點的完全二叉樹我們稱為最小堆。反之,如果所有父結點都比子結點要大,這樣的完全二叉樹稱為最大堆。那這一...