2011-03-04 CLRS Chapter6 Heapsort(下)优先队列
优先队列的概念好理解,想想进程调度中的进程队列就是了。在CLRS中,优先队列的定义如下:
A priority queue is a data structure for maintaining a set S of elements, each with an associated value called a key. A max-priority queue supports the following operations.
· INSERT(S, x) inserts the element x into the set S. This operation could be written as S ← S ∪ {x}.
· MAXIMUM(S) returns the element of S with the largest key.
· EXTRACT-MAX(S) removes and returns the element of S with the largest key.
· INCREASE-KEY(S, x, k) increases the value of element x's key to the new value k, which is assumed to be at least as large as x's current key value.
下面的代码由Java实现,很是别扭,如果把Heap当作数据层,PriorityQueue当作逻辑层,那最大的问题就是对于很多代码,或者说功能,究竟应该放到数据层呢,还是应该放到逻辑层?
HeapPriorityQueue.java:
底层的Heap数据结构 Heap.java