優先順序佇列(堆實現)

2021-09-02 09:01:28 字數 1978 閱讀 7949

(一)優先順序佇列定義

(二)方法實現 

獲得最大元素方法

去掉最大元素方法

修改優先順序方法

新增節點

(三)實現

/**

* 用堆實現乙個優先順序佇列

* 主要是新增、修改、刪除節點

* 節點具有唯一性

* @author hhf

* 2023年11月28日

*/public class priorityqueue

/*** 返回優先佇列中優先順序最高的節點

* @param array

* @return

*/public static int maximum(int array)

/*** 去掉並返回優先順序佇列中優先順序最高的節點

* @param array

* @return

*/public static int extractmax(int array)

//獲得最優節點

int max = array[0];

//刪除最優節點

array[0] = array[--heapsize];

//整理堆

heapify(array, 0);

//返回最優節點值

return max; }

/*** 往優先佇列中插入節點

* 記得要去重

* @param array

* @param x

*/public static void insert(int array, int x)

/*** 將優先順序為x的節點優先順序修改為k

* @param array

* @param i被修改值下標

* @param k

*/public static void increasekey(int array, int i, int k)

if(k <= array[i])

//優先順序被修改了

array[i] = k;

//整理佇列

int parent = (i-1)/2; //父節點下標

while(parent>-1 && array[parent]=0; i--) }

/*** 前提是i的左右孩子子樹均已經為正常極大堆

* 將i調整為正確位置

* @param array

* @param i 下標

*/public static void heapify(int array, int i)else

if(rightarray[large])

//準備發生交換 和 遞推下一輪

if(large != i)

}}

(ps:附件內附上工具類common.zip)

優先順序佇列(堆實現)

優先順序佇列 概念 一般來說我們會根據事情的重要程度優先處理某事,比如完成學習任務和刷微博,我們會認為完成學習任務比較重要,因此會先執行它,因此在這種情況下,資料結構就應提供兩個基本的操作,一是返回最高優先順序物件,二是新增新的物件,這種資料結構就叫做優先順序佇列。二叉樹的順序儲存 儲存方式 使用陣...

堆(優先順序佇列)

c 的 stl 中提供了 優先佇列 這一容器,它和普通的 fifo 佇列都定義在 中,有 push 和 pop 過程,分別表示 往佇列裡加入新元素 和 從佇列裡刪除隊首元素 唯一的區別是,在優先佇列中,元素並不是按照進入佇列的先後順序排列,而是按照優先順序的高低順序排列 換句話說,pop 刪除的是優...

堆 優先順序佇列

1一般二叉樹的順序儲存 層序遍歷方式 使用陣列儲存二叉樹結構,即將二叉樹 按照層序遍歷 的方式放入陣列.這種方式一般只適用於完全二叉樹,一般的二叉樹會造成空間浪費比較嚴重.2堆 heap 在邏輯上就是乙個 完全二叉樹,在物理上儲存在 陣列 中.1 滿足任意結點的值都大於其子樹的結點的值.叫做大堆,反...