優先佇列 PriorityQueue

2021-08-04 01:43:33 字數 978 閱讀 9238

import queue

q = queue.priorityqueue()

q.put(1) #新增元素

q.get() #刪除元素

python的優先佇列基於最小堆實現。

heap(堆)是乙個除了底層節點外的完全填滿的二叉樹,底層可以不完全,左到右填充節點。而最小堆意味著,任一非終端節點的資料值均不大於其左子節點和右子節點的值。如圖:

python優先佇列插入和刪除的時間複雜度均為logn,get()方法預設返回值最小元素。

class

priorityqueue:

def__init__

(self):

self._queue =

defput(self, item, priority):

defget(self):

q = priorityqueue()

q.put('world', 2)

q.put('hello', 1)

>>>q.get()[1]

hello

>>>q.get()[1]

world

修改一下使得get()返回值最大的元素:

class

priorityqueue:

def__init__

(self):

self._queue =

defput(self, item, priority):

defget(self):

q = priorityqueue()

q.put('world', 2)

q.put('hello', 1)

>>>q.get()[1]

world

>>>q.get()[1]

hello

STL容器 優先佇列priority queue

priority queue顧名思義,是乙個具有權值概念的queue,它和queue一樣允許加入新元素 移除舊元素等功能。由於這是乙個queue,所以只允許在底部加入元素,從頂部取出元素。但優先佇列帶有權值概念,其內的元素自動按照元素的權值排序。權值最高者排在最前面。stl的priority que...

STL初步 優先佇列Priority queue

這個優先到底是如何優先?和普通佇列區別在哪?priority queue type,container,functional priority queue,less q priority queue,less a q priority queue,less b 優先佇列中沒有迭代器 也沒有clear...

優先順序佇列用法詳解(priority queue)

由於優先順序佇列的內部資料結構為堆,所以這裡先介紹堆的一些操作。堆的一些函式操作在algorithm標頭檔案中 在 first,last 範圍內 構造最大堆,first,last 可以是vector指標也可以是陣列指標 make heap first last make heap first las...