From 4fdae9e9e38552ada338f4cdcb9c2fffbb03d6ab Mon Sep 17 00:00:00 2001 From: Rohit-kumar-kundu421 <160501049+Rohit-kumar-kundu421@users.noreply.github.com> Date: Tue, 15 Oct 2024 21:45:49 +0530 Subject: [PATCH 1/2] This is a .py Sorting program. In this program we sort number useing Heap methord. --- heap.py | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 heap.py diff --git a/heap.py b/heap.py new file mode 100644 index 000000000000..c55031990881 --- /dev/null +++ b/heap.py @@ -0,0 +1,63 @@ +class MaxHeap: + def __init__(self): + self.items = [0] * 100 + self.size = 0 + + def swap(self, a, b): + self.items[a], self.items[b] = self.items[b], self.items[a] + + def heapify_up(self, index): + while index > 0 and self.items[(index - 1) // 2] < self.items[index]: + self.swap((index - 1) // 2, index) + index = (index - 1) // 2 + + def heapify_down(self, index): + largest = index + left_child = 2 * index + 1 + right_child = 2 * index + 2 + + if left_child < self.size and self.items[left_child] > self.items[largest]: + largest = left_child + if right_child < self.size and self.items[right_child] > self.items[largest]: + largest = right_child + + if largest != index: + self.swap(index, largest) + self.heapify_down(largest) + + def insert(self, value): + if self.size >= 100: + print("Heap is full. Cannot insert.") + return + self.items[self.size] = value + self.size += 1 + self.heapify_up(self.size - 1) + + def delete_max(self): + if self.size == 0: + print("Heap is empty. Cannot delete.") + return -1 + deleted_item = self.items[0] + self.items[0] = self.items[self.size - 1] + self.size -= 1 + self.heapify_down(0) + return deleted_item + +def heap_sort(arr): + heap = MaxHeap() + + # Inserting elements into the max heap + for i in range(len(arr)): + heap.insert(arr[i]) + + # Deleting elements from the max heap and storing them in sorted order + for i in range(len(arr) - 1, -1, -1): + arr[i] = heap.delete_max() + + return arr + +arr = [4, 10, 3, 5, 1] +arr = heap_sort(arr) + +# Displaying sorted array +print("Sorted array:", arr) \ No newline at end of file From dac54c2e9452598e90db0cca09e2c10a901719b9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 15 Oct 2024 16:16:54 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- heap.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/heap.py b/heap.py index c55031990881..9b3443209c61 100644 --- a/heap.py +++ b/heap.py @@ -43,6 +43,7 @@ def delete_max(self): self.heapify_down(0) return deleted_item + def heap_sort(arr): heap = MaxHeap() @@ -56,8 +57,9 @@ def heap_sort(arr): return arr + arr = [4, 10, 3, 5, 1] arr = heap_sort(arr) # Displaying sorted array -print("Sorted array:", arr) \ No newline at end of file +print("Sorted array:", arr)