编了好久好久呀……真的是很费劲……
优先队列有很多应用,最简单的如,求一组数据中第k大的数字,只需要将该算法稍作更改即可。代码如下:(更改的是main中的MARK处,其他均未改动)
另,在初始化创建堆时,还可以使用BuildHeap算法。代码如下:
也可以先将这N个数字存入到一数组,然后从N/2开始下滤,既可将之调整为堆,代码如下:
第MAXELEMENTS/2个元素恰为树 的倒数第二层。
percolateDown算法形似原函数中的insert算法中的调整部分,就不写了……