(一)優先順序佇列定義
(二)方法實現
獲得最大元素方法
去掉最大元素方法
修改優先順序方法
新增節點
(三)實現
/**
* 用堆實現乙個優先順序佇列
* 主要是新增、修改、刪除節點
* 節點具有唯一性
* @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 滿足任意結點的值都大於其子樹的結點的值.叫做大堆,反...