堆排序 最大優先佇列

2021-06-24 11:35:16 字數 1228 閱讀 1100

//優先佇列支援的操作:insert ,maximum,extract,increasekey,

#include #include #include #define number 100

#define num 6

using namespace std;

struct heaptype

;void exchange(int *,int *);

void maxheapify(heaptype &,int);

void buildmaxheap(heaptype &);

int heapmaximum(heaptype &h);//返回h中具有最大關鍵字的元素

void insert(heaptype &h,int x);//將元素x插入到集合h中使之仍然組成最大堆

int heapextractmax(heaptype &h);//去掉,並返回h中具有最大關鍵字的元素

//將元素i關鍵字增加到k,

void heapincreasekey(heaptype &h,int i,int k);

void print(heaptype &h);

int main()

void exchange(int *x,int *y)

//最大堆的性質

void maxheapify(heaptype &h,int i)

//返回h中具有最大關鍵字的元素

int heapmaximum(heaptype &h)

//去掉,並返回h中具有最大關鍵字的元素

int heapextractmax(heaptype &h)

int max = h.heaparray[1];

h.heaparray[1] = h.heaparray[h.heapsize];

h.heapsize = h.arraysize = h.arraysize - 1;

maxheapify(h,1);

return max;

}//將元素i關鍵字增加到k,

void heapincreasekey(heaptype &h,int i,int k)

//將元素x插入到集合h中使之仍然組成最大堆

void insert(heaptype &h,int x)

void print(heaptype &h)

cout << endl;

}

堆排序 最大優先順序佇列

author bigballon note max priority queue date 2013.11.21 一篇好文章 include using namespace std void my swap int x,int y void max heapify int a,int i,int l...

優先佇列 堆排序

一種支援刪除最大元素和插入元素兩種操作的資料結構叫做優先佇列。實現棧or佇列與實現優先佇列的最大不同在於效能的要求。對於棧和佇列,我們實現能在常數時間完成所有操作 而優先佇列,插入元素和刪除最大元素這兩個操作在最壞情況下需要線性時間完成 優先佇列的各種實現在在最壞情況下執行時間的增長數量級 資料結構...

堆排序 優先佇列

1.堆排序 a.堆的定義 n個元素序列當且僅當滿足以下關係時,稱之為堆。ki k2i且ki k2i 1 小根堆 ki k2i且ki k2i 1 大根堆 以下針對最大堆 b.維護堆的性質 max heapify通過讓a i 的值在最大堆中 逐級下降 a i 的值小於其左右孩子的值時 從而使得以i為根結...