From 56a0f3297f1dbc2372599cf5deda6d3bbf3fb9c4 Mon Sep 17 00:00:00 2001 From: seoyiju <166982000+seoyiju@users.noreply.github.com> Date: Mon, 17 Mar 2025 16:55:33 +0900 Subject: [PATCH 01/11] Update priority_queue.py --- priority_queue.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/priority_queue.py b/priority_queue.py index 6994ec7..7e0f321 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -35,11 +35,11 @@ def _sift_down(self, index): smallest = index if left_child_index < len(self.heap) and \ - self.heap[left_child_index][0] > self.heap[smallest][0]: + self.heap[left_child_index][0] < self.heap[smallest][0]: smallest = left_child_index if right_child_index < len(self.heap) and \ - self.heap[right_child_index][0] > self.heap[smallest][0]: + self.heap[right_child_index][0] < self.heap[smallest][0]: smallest = right_child_index if smallest != index: From bbe54c0b50f827599c4d8ce4e975de6e0ce61131 Mon Sep 17 00:00:00 2001 From: seoyiju <166982000+seoyiju@users.noreply.github.com> Date: Mon, 17 Mar 2025 17:04:23 +0900 Subject: [PATCH 02/11] Update main.py --- main.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/main.py b/main.py index 5a3e755..d6ec0bd 100644 --- a/main.py +++ b/main.py @@ -1,14 +1,14 @@ from priority_queue import PriorityQueue def main(): - pq = PriorityQueue() - - pq.push("Task 1", 3) - pq.push("Task 2", 1) - pq.push("Task 3", 2) - - print(pq.pop()) - print(pq.pop()) - print(pq.pop()) + pq = PriorityQueue() + + pq.push("Task 1", 3) + pq.push("Task 2", 1) + pq.push("Task 3", 2) + + print(pq.pop()) + print(pq.pop()) + print(pq.pop()) if __name__ == "__main__": - main() \ No newline at end of file + main() From 20be9db675cb8ba04d5194104df6dd37e9b939b7 Mon Sep 17 00:00:00 2001 From: seoyiju <166982000+seoyiju@users.noreply.github.com> Date: Mon, 24 Mar 2025 03:00:03 +0900 Subject: [PATCH 03/11] Update priority_queue.py --- priority_queue.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/priority_queue.py b/priority_queue.py index 7e0f321..ab52c62 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -1,20 +1,22 @@ class PriorityQueue: def __init__(self): self.heap = [] + self.counter = 0 # tie-breaker def push(self, item, priority): - entry = (priority, item) + entry = (priority, self.counter, item) # (우선순위, 순번, 아이템) + self.counter += 1 self.heap.append(entry) self._sift_up(len(self.heap) - 1) def pop(self): if len(self.heap) > 1: self._swap(0, len(self.heap) - 1) - priority, item = self.heap.pop() + priority, count, item = self.heap.pop() self._sift_down(0) return item elif len(self.heap) == 1: - priority, item = self.heap.pop() + priority, count, item = self.heap.pop() return item else: return None @@ -22,7 +24,7 @@ def pop(self): def _sift_up(self, index): while index > 0: parent_index = (index - 1) // 2 - if self.heap[parent_index][0] > self.heap[index][0]: + if self.heap[parent_index][:2] > self.heap[index][:2]: # compare by (priority, counter) self._swap(parent_index, index) index = parent_index else: @@ -35,11 +37,11 @@ def _sift_down(self, index): smallest = index if left_child_index < len(self.heap) and \ - self.heap[left_child_index][0] < self.heap[smallest][0]: + self.heap[left_child_index][:2] < self.heap[smallest][:2]: smallest = left_child_index if right_child_index < len(self.heap) and \ - self.heap[right_child_index][0] < self.heap[smallest][0]: + self.heap[right_child_index][:2] < self.heap[smallest][:2]: smallest = right_child_index if smallest != index: From 297bb922a943d2d6549e5ff282d827fe1c941282 Mon Sep 17 00:00:00 2001 From: seoyiju <166982000+seoyiju@users.noreply.github.com> Date: Mon, 24 Mar 2025 03:03:01 +0900 Subject: [PATCH 04/11] Update priority_queue.py --- priority_queue.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/priority_queue.py b/priority_queue.py index ab52c62..0fda4f8 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -10,16 +10,16 @@ def push(self, item, priority): self._sift_up(len(self.heap) - 1) def pop(self): - if len(self.heap) > 1: - self._swap(0, len(self.heap) - 1) - priority, count, item = self.heap.pop() - self._sift_down(0) - return item - elif len(self.heap) == 1: - priority, count, item = self.heap.pop() - return item - else: - return None + if len(self.heap) > 1: + self._swap(0, len(self.heap) - 1) + _, _, item = self.heap.pop() + self._sift_down(0) + return item + elif len(self.heap) == 1: + _, _, item = self.heap.pop() + return item + else: + return None def _sift_up(self, index): while index > 0: From 259ff0dd1065c1745bda99946a7c7495f9bf8447 Mon Sep 17 00:00:00 2001 From: seoyiju <166982000+seoyiju@users.noreply.github.com> Date: Mon, 24 Mar 2025 03:05:28 +0900 Subject: [PATCH 05/11] Update priority_queue.py --- priority_queue.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/priority_queue.py b/priority_queue.py index 0fda4f8..b0d7f2c 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -10,16 +10,16 @@ def push(self, item, priority): self._sift_up(len(self.heap) - 1) def pop(self): - if len(self.heap) > 1: - self._swap(0, len(self.heap) - 1) - _, _, item = self.heap.pop() - self._sift_down(0) - return item - elif len(self.heap) == 1: - _, _, item = self.heap.pop() - return item - else: - return None + if len(self.heap) > 1: + self._swap(0, len(self.heap) - 1) + _, _, item = self.heap.pop() + self._sift_down(0) + return item + elif len(self.heap) == 1: + _, _, item = self.heap.pop() + return item + else: + return None def _sift_up(self, index): while index > 0: From 730aed3634962ff7d8653c09e608da0fbf145017 Mon Sep 17 00:00:00 2001 From: seoyiju <166982000+seoyiju@users.noreply.github.com> Date: Mon, 24 Mar 2025 03:07:12 +0900 Subject: [PATCH 06/11] Update priority_queue.py --- priority_queue.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priority_queue.py b/priority_queue.py index b0d7f2c..1ca2ef8 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -12,7 +12,7 @@ def push(self, item, priority): def pop(self): if len(self.heap) > 1: self._swap(0, len(self.heap) - 1) - _, _, item = self.heap.pop() + _, _, item = self.heap.pop() self._sift_down(0) return item elif len(self.heap) == 1: From 9317b72e99ede318cc29abdd003b191049273add Mon Sep 17 00:00:00 2001 From: seoyiju <166982000+seoyiju@users.noreply.github.com> Date: Mon, 24 Mar 2025 03:09:43 +0900 Subject: [PATCH 07/11] Update priority_queue.py --- priority_queue.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priority_queue.py b/priority_queue.py index 1ca2ef8..22970a9 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -24,7 +24,7 @@ def pop(self): def _sift_up(self, index): while index > 0: parent_index = (index - 1) // 2 - if self.heap[parent_index][:2] > self.heap[index][:2]: # compare by (priority, counter) + if self.heap[parent_index][:2] > self.heap[index][:2]: self._swap(parent_index, index) index = parent_index else: From 2da3b4e83cd8586a3dda5aae6c415012a983a23e Mon Sep 17 00:00:00 2001 From: seoyiju <166982000+seoyiju@users.noreply.github.com> Date: Mon, 24 Mar 2025 03:13:19 +0900 Subject: [PATCH 08/11] Update priority_queue.py --- priority_queue.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/priority_queue.py b/priority_queue.py index 22970a9..7e0f321 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -1,22 +1,20 @@ class PriorityQueue: def __init__(self): self.heap = [] - self.counter = 0 # tie-breaker def push(self, item, priority): - entry = (priority, self.counter, item) # (우선순위, 순번, 아이템) - self.counter += 1 + entry = (priority, item) self.heap.append(entry) self._sift_up(len(self.heap) - 1) def pop(self): if len(self.heap) > 1: self._swap(0, len(self.heap) - 1) - _, _, item = self.heap.pop() + priority, item = self.heap.pop() self._sift_down(0) return item elif len(self.heap) == 1: - _, _, item = self.heap.pop() + priority, item = self.heap.pop() return item else: return None @@ -24,7 +22,7 @@ def pop(self): def _sift_up(self, index): while index > 0: parent_index = (index - 1) // 2 - if self.heap[parent_index][:2] > self.heap[index][:2]: + if self.heap[parent_index][0] > self.heap[index][0]: self._swap(parent_index, index) index = parent_index else: @@ -37,11 +35,11 @@ def _sift_down(self, index): smallest = index if left_child_index < len(self.heap) and \ - self.heap[left_child_index][:2] < self.heap[smallest][:2]: + self.heap[left_child_index][0] < self.heap[smallest][0]: smallest = left_child_index if right_child_index < len(self.heap) and \ - self.heap[right_child_index][:2] < self.heap[smallest][:2]: + self.heap[right_child_index][0] < self.heap[smallest][0]: smallest = right_child_index if smallest != index: From c50152f9531a87f10f766d5167ddf1cb953386bf Mon Sep 17 00:00:00 2001 From: seoyiju <166982000+seoyiju@users.noreply.github.com> Date: Mon, 24 Mar 2025 03:15:33 +0900 Subject: [PATCH 09/11] Update priority_queue.py --- priority_queue.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priority_queue.py b/priority_queue.py index 7e0f321..f105ede 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -14,7 +14,7 @@ def pop(self): self._sift_down(0) return item elif len(self.heap) == 1: - priority, item = self.heap.pop() + _, item = self.heap.pop() return item else: return None From ed34e36d53941f0b021630730760e3c98f5a61f3 Mon Sep 17 00:00:00 2001 From: seoyiju <166982000+seoyiju@users.noreply.github.com> Date: Mon, 24 Mar 2025 03:17:23 +0900 Subject: [PATCH 10/11] Update priority_queue.py --- priority_queue.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priority_queue.py b/priority_queue.py index f105ede..f54f6be 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -10,7 +10,7 @@ def push(self, item, priority): def pop(self): if len(self.heap) > 1: self._swap(0, len(self.heap) - 1) - priority, item = self.heap.pop() + _, item = self.heap.pop() self._sift_down(0) return item elif len(self.heap) == 1: From be639b54e9c7d5fdf22a08eff5fc1647112e58d8 Mon Sep 17 00:00:00 2001 From: seoyiju <166982000+seoyiju@users.noreply.github.com> Date: Mon, 24 Mar 2025 03:22:55 +0900 Subject: [PATCH 11/11] Rename test.py to test_priority_queue.py --- test.py => test_priority_queue.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test.py => test_priority_queue.py (100%) diff --git a/test.py b/test_priority_queue.py similarity index 100% rename from test.py rename to test_priority_queue.py