在完全二叉樹周插入元素的方法是插入到底層,上濾
在完全二叉樹周刪除元素的方法是將底層元素置於頂端,下濾
為插入詞條e,只需要將e作為末尾元素接入向量
否則,e與其父節點換位
否則,e再與父節點換位
不斷重複,直到e與其父親滿足堆序性,或者e達到堆頂(沒有父親)
template void pq_complheap::insert ( t e )
//對向量中的第i個詞條實施上濾操作,i < _size
template rank pq_complheap::percolateup ( rank i ) //while
return i; //返回上濾最終抵達的位置
}
時間複雜度:o(log(n))
改進:常係數意義上的改進,原來的swap操作的時間複雜度是o(3log(n)),現在可以先將要插入的值e儲存,然後依次上濾,最後再將該值賦給最終的位置,這樣改進之後的時間複雜度是o(log(n))+2
摘除向量的首元素,代之以末元素e,//結構性保持;若堆序性依然保持則完成,
否則,//即e與孩子們違背堆序性
e與孩子們中的大者換位
//若堆序性因此恢復,則完成,
否則,e再次與孩子們中的最大者換位
template t pq_complheap::delmax()
//對向量前n個詞條中的第i個實施下濾,i < n
template rank pq_complheap::percolatedown ( rank n, rank i ) //二者換位,並繼續考查下降後的i
return i; //返回下濾抵達的位置(亦i亦j)
}
時間複雜度:o(log(n))
改進:與上濾類似,改進swap
佇列 優先順序佇列
優先順序佇列的隊尾是不需要改變的,永遠在低下標處。當佇列增加資料時,隊頭的位置就是資料項的大小減去1.public class priorityq 插入 public void insert long item else quearray j 1 item nitem 刪除 public long ...
優先順序佇列
分為最小優先順序佇列和最大優先順序佇列。優先順序佇列是一種用來維護一組元素構成的集合s的資料結構,這一組元素都有乙個關鍵字key,乙個最大優先順序佇列支援的操作 insert s,x 把x插入到集合s中 maxmum s 返回s中最大元素 extra max s 去掉s中最大關鍵字並返回該最大關鍵子...
優先順序佇列
1 include stdafx.h 2 include3 4 using namespace std 5 6 define max heap len 107 int heap max heap len 8 int heap size 0 the number of elements in heap...