extract_max(s):返回並去掉s中最大的元素。
increase_key(s,x,k):將集合s中的x元素關鍵字的值提公升至k,假設k不小於原x的關鍵字值。
insert(s,x):將元素x插入集合s中。
#include#include//針對節點i及其子樹進行最大堆的調整
void max_heapify(int* a, int i, int count) //a是需要構造最大堆的數,count為數的個數
}//建立最大堆
void build_max_heap(int* a, int count)
}//返回優先度最大的物件
int heap_maximum(int* a)
//返回並刪除優先度最大的物件
int heap_extract_max(int* a, int count)
//增加元素的優先度
void heap_increase_key(int* a, int i, int key) //key是需要改變元素的優先度,i代表第幾個結點
}//插入元素
int* heap_insert(int* a, int key, int count)
p[count] = -1;
heap_increase_key(p, count, key);
return p;
}void main11()
//依據輸入的一列數字,建出乙個最大堆
build_max_heap(p, count - 1);
printf("建立最大堆後的陣列:");
for (int i = 0; i < count; i++)
printf("\n\n");
printf("最大元素為:%d\n", heap_maximum(p));
printf("\n\n");
printf("彈出最大元素:%d, 當前堆為:", heap_extract_max(p, count - 1));
count--;
for (int i = 0; i < count; i++)
printf("\n\n");
printf("增大第5個元素的優先度為10, 當前堆為:");
heap_increase_key(p, 4, 10);
for (int i = 0; i < count; i++)
printf("\n\n");
printf("插入乙個優先度為100的元素,當前堆為:");
p = heap_insert(p, 100, count);
for (int i = 0; i < count + 1; i++)
system("pause");
}
堆排序 最大優先佇列
優先佇列支援的操作 insert maximum,extract,increasekey,include include include define number 100 define num 6 using namespace std struct heaptype void exchange ...
最大優先佇列 演算法導論
堆排序是乙個優秀的演算法,但是在實際應用中,如快速排序的效能會優於它。但是堆排序有著另外的作用,如優先佇列 與堆排序一樣,優先佇列也有兩種形式 最大優先佇列,最小優先佇列 暫且討論最大優先佇列 優先佇列 是一種用來維護由一組元素構成的集合s的資料結果,其中的每個元素都有乙個相關的值,稱為關鍵字。最大...
如何基於最大堆實現最大優先佇列
優先佇列 priority queue 是一種用來維護由一組元素構成的集合a的資料結構,其中的每個元素 x x 都有乙個相關的值,稱為關鍵字 ke y role presentation key key 乙個最大優先佇列支援以下操作 在包含n個元素的堆中,所有優先佇列的操作都可以在 o role p...