2 5 2 優先佇列

2022-06-19 14:15:11 字數 857 閱讀 9884

1.時間複雜度:最小堆

n個結點的完全二叉樹(堆是完全二叉樹)的深度為h(根的深度為1),則h和n之間滿足 2^(h-2) 從**的直觀來看,每次調整乙個結點需要log(n),一共調整(n-1)/2個結點,故時間複雜度為o(nlogn),但要注意在中間過程中第s層的結點往下調整時實際只需最多調整(h-s)次,第s層一共調整2^(s-1)*(h-s),這樣時間複雜度可寫成:

所以優先佇列的構建時間為線性的。

2.功能:自動排序(預設從大到小)

3.標頭檔案:

#include

4.宣告:

priority_queue《型別》 q;

5.操作:(注意和queue比   沒有front和back操作)

q.size();//

返回q裡元素個數

q.empty();//

返回q是否為空,空則返回1,否則返回0

q.push(k);//

在q的末尾插入k

q.pop();//

刪掉q的第乙個元素

q.top();//

返回q的第乙個元素

6.優先佇列中使用結構體:(操作符過載)

struct

time

};

注意引數列表中的 const 不能少;

7.自定義排序:

從小到大:

priority_queue,greater >q1;

//從大到小排序,最後兩個》 >中間必須要用空格

第二個引數為容器型別;

第三個引數為比較函式。

參考1:

參考2:

優先佇列(3道優先佇列問題)

優先佇列是一種十分強大的資料結構,它保持了一種動態的有序性,對於不斷改變有入隊的操作,而又需要某種最大或最小的操作的問題是再合適不過了,通常優先佇列的實現是由最小堆或者最大堆完成的,並通過堆排序保持佇列的有序性,模擬佇列的結構,在實際比賽中要寫乙個堆排序還是要一定的時間的,但是stl中queue容器...

佇列以及優先佇列

1.佇列 佇列的定義 標頭檔案 include 佇列是一種先進先出的資料結構 佇列的宣告 queueq 宣告字元型別 queueq 宣告結構體型別 以及可以宣告一些自定義的型別 佇列的操作 入佇列 s.push x 出佇列 s.pop 返回佇列的資料數量 s.size 判斷佇列是否為空 s.empt...

堆疊,佇列,優先佇列

包含標頭檔案 include定義 stacks 特點 先進後出。即 像瓶子一樣。先進來的資料在底部。例 輸入 1 2 3 4 5 輸出 5 4 3 2 1 棧的基本操作 s.push a 把元素a入棧。s.pop 刪除棧頂元素。s.top 返回棧頂元素,但不會刪除。s.size 返回棧中元素個數。s...