資料結構 簡單實現優先佇列(維護大小堆)

2021-10-09 08:05:54 字數 1550 閱讀 3445

主要思想是堆排序裡面的維護大/小堆。

top一直指向堆頂,而push/pop要維護堆,pop出的值是top。(注意:大根堆和小根堆只需要堆頂最大/小就行!)

偽**方法:

push(引數)

pop()

下面引用自:24隻羊

堆和優先佇列

2.1 堆中新增元素和shift up

現在我們要新增元素52,先新增到索引為10的位置,然而現在不滿足二叉堆的性質,所以要調整52的位置,所以讓52和自己的父親節點依次與父親節點相比較,如52大於父親節點,就交換52與父親節點的位置-------shift

我們先取出最大值62,因為將兩顆子樹融合成一棵樹比較複雜,所以我們可以把最小值16換到根節點,然後在採用shift-down操作,

shift-down:把16與左右兩個孩子節點相比較,選擇兩個孩子中最大的那個元素,如果最大的那個元素比16大,則將16與它交換,很顯然52與16做交換

探後繼續與41做交換

因為16比15大,所以就完成啦

資料結構 維護佇列

alice 給 bob 布置了很多任務作,他忙的不可開交,決定按照 先進先出 fifo 的順序依次處理這些工作。但是處理過程中,bob 意識到這種順序可能不是最優的,因此他會選擇性的把某些工作延後。抽象來說,你需要維護乙個佇列,支援三種操作 操作一 1v,在隊尾加入乙個價值為 v 的任務。操作二 2...

資料結構 優先佇列

優先佇列是允許至少下列兩種操作的資料結構 insert 插入 deletermin 刪除最小者 它的工作室找出 返回 刪除優先佇列最小的元素。插入操作等於enqueue 入隊 而detemin則是佇列中dequeue 出隊 在優先佇列中的等價操作。determin函式也變更它的輸入。二叉堆 結構性 ...

資料結構 優先佇列

形象化描述 可以插隊的佇列。標頭檔案 定義方法 較為簡單的常見優先佇列可直接定義 如 priority queue,greater pq 即定義乙個越小的整數優先順序越大的優先佇列。若想實現自定義排序,需過載運算子 如 struct cmp 定義方法 priority queue,cmp pq 注意...