C 單排之路 優先佇列

2021-08-19 10:41:55 字數 1006 閱讀 4163

//優先佇列演算法

//堆排序是一種非常優秀的演算法,但是在實際情況中堆排序的效率卻不及快速排序。而作為一種資料結構,堆還有乙個比較常用的應用,作為高效的優先佇列

// author's e-mail : [email protected] feel free to contact me for comments on my work

#include]

#includeusing namespace std;

void exchange(int &a,int &b)

//調整最大堆

void maxheapify(vector&a,int pos)

if((ra[largest]))

if(largest!=pos)

}//建立最大堆

void creatmaxheap(vector&a)

}//返回對首元素,即優先順序最大的元素

int heapmaximum(vector&a)

//返回對首元素,並將其出隊

int heapextractmax(vector&a)

int max = a[0];

a[0] = a[a.size()-1];

a.erase(a.begin()+(a.size()-1)); //刪除最後乙個元素

maxheapify(a, 0);

return max;

}//把a[pos]的值更新為key,保持最大堆,這裡的key值要大於原來a[pos]

void heapincreasekey(vector&a,int pos,int key)

//輸出堆

void printheap(vector&a){

int c = 2;

for (int i = 0; i < a.size();i++)

{coutcreatmaxheap(array); //建立最大堆

cout<<"the max heap is :"<

C 優先佇列

半題外話 優先佇列個人認為主要優點是可以在排序後進行類似於插入排序的操作,適合於需要在陣列排序後再次進行操作的題目 再由此產生一堆bug 本蒟蒻是在敲貪心的題時遇見的 弱得連個貪心都不會敲了呵 就開始了學 mo 習 ca 之旅 優先佇列的結構 佇列1.back 返回乙個引用,指向最後乙個元素 2.e...

c 優先佇列

優先佇列容器與佇列一樣,只能從隊尾插入元素,從隊首刪除元素。但是它有乙個特性,就是佇列中最大的元素總是位於隊首,所以出隊時,並非按照先進先出的原則進行,而是將當前佇列中最大的元素出隊。這點類似於給佇列裡的元素進行了由大到小的順序排序。元素的比較規則預設按元素值由大到小排序,可以過載 操作符來重新定義...

優先佇列 c

1.標頭檔案 include queue 2.定義 優先佇列和佇列一樣,只能從隊尾插入元素,從隊首刪除元素。佇列中最大的元素總是位於隊首。可以通過過載 運算子來重新定義比較規則。3.訪問 和佇列不同,優先佇列沒有front 和back 函式,只能通過 top 來訪問隊首元素 堆頂元素,優先順序最高的...