優先佇列是允許至少下列兩種操作的資料結構:insert(插入)、deletermin(刪除最小者)。它的工作室找出、返回、刪除優先佇列最小的元素。
插入操作等於enqueue(入隊)、而detemin則是佇列中dequeue(出隊)在優先佇列中的等價操作。determin函式也變更它的輸入。
二叉堆:結構性、堆序性
堆是一棵被完全填滿的二叉樹。
一棵高為h的完全二叉樹有2h到2h+1-1個節點,這意味著,完全二叉樹的高是【logn】,所以它是o(logn).
因為完全二叉樹很有規律,所以它可以用乙個陣列表示而不需要指標。
使操作被快速執行的性質是堆序性。在乙個堆中,對於每乙個節點x,x的父親中的關鍵字小於(等於)x中的關鍵字。根節點除外(它沒有父親)。
根據堆序性質,最小元總可以在根處找到。
插入(insert):
為將乙個元素x插入到堆中,我們在下乙個空閒的位置建立乙個空穴,否則該樹將不是完全樹。如果x可以放在該空穴中而不破壞堆的序,那麼插入完成,
否則,我們把空穴的父節點上的元素移入到該空穴,這樣,空穴就朝著根的方向上行一步。繼續該過程知道x可以放入到空穴中為止。
這種策略叫做上濾。
deletemin(刪除最小值)
deletemin以類似於插入的方式處理。找出最小元是容易的,困難的部分在與刪除它。當刪除乙個最小元時,在根節點處產生乙個空穴。由於現在堆缺少了乙個元素。
因此堆中最後乙個元素x必須移動到該堆的某個地方。如果x可以放到空穴,那麼detelemin完成。否則我們將空穴的兩個兒子中的較小者放入空穴,這樣就把空穴
向下推了一層。重複該步驟知道x可以放入空穴。
資料結構 優先佇列
形象化描述 可以插隊的佇列。標頭檔案 定義方法 較為簡單的常見優先佇列可直接定義 如 priority queue,greater pq 即定義乙個越小的整數優先順序越大的優先佇列。若想實現自定義排序,需過載運算子 如 struct cmp 定義方法 priority queue,cmp pq 注意...
資料結構 優先佇列
優先佇列 pr iori tyqu eue priority queue prior ityq ueue 定義 普通的佇列是一種先進先出的資料結構,元素在佇列尾追加,而從佇列頭刪除。在優先佇列中,元素被賦予優先順序。當訪問元素時,具有最高優先順序的元素最先刪除。優先佇列具有最高端先出 fi rsti...
資料結構 優先佇列
普通的佇列是一種先進先出的資料結構,元素在佇列尾追加,而從佇列頭刪除。在優先佇列中,元素被賦予優先順序。當訪問元素時,具有最高優先順序的元素最先刪除。優先佇列具有最高端先出 first in,largest out 的行為特徵。通常採用堆資料結構來實現。本 採用c 編寫,包含優先佇列的幾種常用操作 ...