優先順序佇列 Priority Queue 二

2021-10-02 15:44:26 字數 951 閱讀 2431

在完全二叉樹周插入元素的方法是插入到底層,上濾

在完全二叉樹周刪除元素的方法是將底層元素置於頂端,下濾

為插入詞條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...