佇列 優先順序佇列 python 程式碼實現
背景
眾所周知,普通的佇列就是先進先出的,棧是先進後出。其實他們的儲存都是在一個列表或者陣列裡面。
所以我們引出了優先順序佇列,讓裡面的每一個元素具有了自己的權值。可以人為的設定權值的大小。也可以根據停留的時間來確定權值的大小。如果停留的時間越長,那麼優先順序越大,就是佇列。如果停留的時間越短,那麼優先順序越大,那就是棧。
import collections
import heapq
class Queue:
def __init__(self):
self.elements = collections.deque()
def empty(self):
return len(self.elements) == 0
def put(self, x):
self.elements.append(x)
def get(self):
return self.elements.popleft()
class PriorityQueue:
def __init__(self):
self.elements = []
def empty(self):
return len(self.elements) == 0
def put(self, item, priority):
heapq.heappush(self.elements, (priority, item))
def get(self):
return heapq.heappop(self.elements)[1]
相關文章
- Redis實現任務佇列、優先順序佇列Redis佇列
- 封裝優先順序佇列封裝佇列
- 棧,佇列,優先順序佇列簡單介面使用佇列
- 【資料結構】佇列(順序佇列、鏈佇列)的JAVA程式碼實現資料結構佇列Java
- Python 列表推導及優先順序佇列的實現Python佇列
- [PY3]——實現一個優先順序佇列佇列
- Java優先順序佇列DelayedWorkQueue原理分析Java佇列
- 原始碼解析C#中PriorityQueue(優先順序佇列)的實現原始碼C#佇列
- Facebook的分散式優先順序佇列FOQS分散式佇列
- Python3 執行緒優先順序佇列( Queue)Python執行緒佇列
- 使用C#實現順序佇列C#佇列
- 【資料結構】堆排序和模擬實現優先順序佇列!!資料結構排序佇列
- [演算法系列之四]優先順序佇列演算法佇列
- 佇列-順序儲存佇列
- 順序佇列基本操作佇列
- 個推基於 Apache Pulsar 的優先順序佇列方案Apache佇列
- RMQ——支援合併和優先順序的訊息佇列MQ佇列
- PHP優先佇列PHP佇列
- 堆--優先佇列佇列
- 優先佇列 (轉)佇列
- 佇列的順序儲存--迴圈佇列的建立佇列
- .NET 6 優先佇列 PriorityQueue 實現分析佇列
- 二叉堆實現優先佇列佇列
- 淺談優先佇列佇列
- STL 優先佇列 用法佇列
- 堆與優先佇列佇列
- 堆和優先佇列佇列
- 全網最適合入門的物件導向程式設計教程:41 Python 常用複合資料型別-佇列(FIFO、LIFO、優先順序佇列、雙端佇列和環形佇列)物件程式設計Python資料型別佇列
- 優先佇列的一種實現方式—堆佇列
- Python佇列的三種佇列實現方法Python佇列
- 【資料結構】順序佇列的實現(c++)資料結構佇列C++
- 三、資料結構演算法-棧、佇列、優先佇列、雙端佇列資料結構演算法佇列
- 基於EasyNetQ封裝RabbitMQ,優先順序郵件服務佇列封裝MQ佇列
- 優先順序佇列是一種什麼樣的資料結構佇列資料結構
- 優先佇列和堆排序佇列排序
- 堆排序與優先佇列排序佇列
- Java優先佇列(PriorityQueue)示例Java佇列
- 體驗Rabbitmq強大的【優先順序佇列】之輕鬆面對現實業務場景MQ佇列