キュー優先キューpythonコード実装
4547 ワード
背景
周知のように、普通のキューは先進的に先に出て、スタックは先進的に後に出ます.実は彼らのストレージはすべてリストや配列の中にあります.優先順位キューを呼び出し、各要素に独自の重みを持たせます.人為的に重み値の大きさを設定できます.滞留時間に応じて重み値の大きさを決定することもできる.滞在時間が長ければ長いほど優先度が高くなるのがキューです.滞在時間が短いほど優先度が高くなるのがスタックです.
周知のように、普通のキューは先進的に先に出て、スタックは先進的に後に出ます.実は彼らのストレージはすべてリストや配列の中にあります.優先順位キューを呼び出し、各要素に独自の重みを持たせます.人為的に重み値の大きさを設定できます.滞留時間に応じて重み値の大きさを決定することもできる.滞在時間が長ければ長いほど優先度が高くなるのがキューです.滞在時間が短いほど優先度が高くなるのがスタックです.
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]