最大優先順序佇列有著以下操作:
1.返回最大值:heap_maximum
2.去掉最大值並返回:heap_extract_max
3.將i的關鍵值增加到key:heap_increase_key
4.向優先佇列中插入乙個結點:max_heap_insert
演算法**及測試**如下:
#include #include #include #define max 1000
//函式原型
void max_heapify(int a,int i,int length);
void swap(int *a,int *b);
int heap_maximum(int a);
void build_max_heap(int a,int n);
int heap_extract_max(int a,int &n);
int parent(int i);
void heap_increase_key(int a,int i,int key);
void max_heap_insert(int a,int &n,int key);
int main()
;//除test[0]外,10個測試資料
int n=10;
build_max_heap(test,10);//建立大頂堆
int result=heap_extract_max(test,n);
max_heap_insert(test,n,111);
for(int i=1;i<11;i++)
printf("%d ",test[i]);
getch();
}//保持大頂堆性質
void max_heapify(int a,int i,int length)
//交換
void swap(int *a,int *b)
//返回最大值
int heap_maximum(int a)
//去掉並返回最大值
int heap_extract_max(int a,int &n)
//將i的關鍵值增加到key,key應該大於a[i]
void heap_increase_key(int a,int i,int key) }}
//求parent結點的關鍵值
int parent(int i)
//向優先佇列中插入乙個結點
void max_heap_insert(int a,int &n,int key)
總結:最大優先順序佇列主要用於作業排程,當某一作業完成或被終端時,選擇出具有最高優先順序的作業。相對的還有最小優先順序佇列。 優先順序佇列(堆實現)
一 優先順序佇列定義 二 方法實現 獲得最大元素方法 去掉最大元素方法 修改優先順序方法 新增節點 三 實現 用堆實現乙個優先順序佇列 主要是新增 修改 刪除節點 節點具有唯一性 author hhf 2014年11月28日 public class priorityqueue 返回優先佇列中優先順...
優先順序佇列(堆實現)
優先順序佇列 概念 一般來說我們會根據事情的重要程度優先處理某事,比如完成學習任務和刷微博,我們會認為完成學習任務比較重要,因此會先執行它,因此在這種情況下,資料結構就應提供兩個基本的操作,一是返回最高優先順序物件,二是新增新的物件,這種資料結構就叫做優先順序佇列。二叉樹的順序儲存 儲存方式 使用陣...
堆實現的優先順序佇列
堆實現的優先順序佇列的主要方法說明 1 heap maximum int a 返回中具有最大關鍵字的元素 2 heap extract max int a 去掉並返回具有最大關鍵字的元素 3 heap increase key int a,int i,int k 將第i個元素的關鍵字值增加到k,k不...