- 配列を使用した実装:
- 優先度付きキューを実現するために、配列を使用する方法があります。要素は配列内に格納され、優先度に基づいて適切な位置に配置されます。挿入や削除の操作には、要素の移動が必要になる場合があります。
class PriorityQueue:
def __init__(self):
self.queue = []
def enqueue(self, item, priority):
self.queue.append((item, priority))
self.queue.sort(key=lambda x: x[1])
def dequeue(self):
if not self.is_empty():
return self.queue.pop(0)[0]
else:
return None
def is_empty(self):
return len(self.queue) == 0
- ヒープを使用した実装:
- ヒープは二分木を基にしたデータ構造であり、優先度付きキューの実装に適しています。要素の挿入や削除には、O(log n) の時間がかかります。
import heapq
class PriorityQueue:
def __init__(self):
self.queue = []
self.index = 0
def enqueue(self, item, priority):
heapq.heappush(self.queue, (priority, self.index, item))
self.index += 1
def dequeue(self):
if not self.is_empty():
return heapq.heappop(self.queue)[2]
else:
return None
def is_empty(self):
return len(self.queue) == 0
優先度付きキューは、さまざまなアプリケーションで役立ちます。例えば、タスクスケジューリング、イベント処理、最短経路探索などです。優先度付きキューを使用することで、要素の挿入や削除が効率的に行えます。
この記事では、優先度付きキューの基本的な実装方法と使用方法について説明しました。これにより、優先度付きキューを理解し、必要な場合に効果的に使用することができるでしょう。