From 990749275226c680f602e65753ee605c6a501e05 Mon Sep 17 00:00:00 2001 From: shaonty Date: Sun, 25 Mar 2018 12:24:22 +0600 Subject: [PATCH 1/6] Heap code and test added --- .gitignore | 1 + Data Structure/Heap/README.md | 0 Data Structure/Heap/heap.py | 77 ++++++++++++++++++++++++++++++++ Data Structure/Heap/test_heap.py | 24 ++++++++++ 4 files changed, 102 insertions(+) create mode 100644 Data Structure/Heap/README.md create mode 100644 Data Structure/Heap/heap.py create mode 100644 Data Structure/Heap/test_heap.py diff --git a/.gitignore b/.gitignore index 2cceedb..96d9c40 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ **/__pycache__/* +*.pyc diff --git a/Data Structure/Heap/README.md b/Data Structure/Heap/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Data Structure/Heap/heap.py b/Data Structure/Heap/heap.py new file mode 100644 index 0000000..e68ba1b --- /dev/null +++ b/Data Structure/Heap/heap.py @@ -0,0 +1,77 @@ +"""MaxHeap implementation using python""" + + +class MaxHeap(object): + + HEAP_SIZE = 10 + + def __init__(self): + self.heap = [0]*MaxHeap.HEAP_SIZE + self.currentPosition = -1 + + def _swap(self,i,j): + self.heap[i], self.heap[j] = self.heap[j], self.heap[i] + + def _heapIsFull(self): + if self.currentPosition == MaxHeap.HEAP_SIZE: + return True + return False + + def insert(self, item): + if self._heapIsFull(): + "Heap is full..." + return + self.currentPosition+=1 + self.heap[self.currentPosition] = item + # adjust parent node item + self._bubbleUp(self.currentPosition) + + def _bubbleUp(self, currentPosition): + index = currentPosition + parrentIndex = index//2 + + if parrentIndex>=0 and self.heap[parrentIndex] < self.heap[index]: + self._swap(parrentIndex, index) + # index = parrentIndex + self._bubbleUp(parrentIndex) + + + def getMax(self): + if self.heap[0]: + return self.heap[0] + else: + return "Empty Heap" + + def pop(self): + if self.currentPosition > 1: + # swap first element with last element + self._swap(0,self.currentPosition) + del self.heap[self.currentPosition] + # adjust parent node item + self._bubbleDown(0) + elif self.currentPosition == 1: + del self.heap[0] + else: + print "No deletion operation for empty heap" + return "False" + + def _bubbleDown(self, index): + left = 2*index+1 + right = 2*index+2 + largest = index + if len(self.heap) > left and self.heap[largest] < self.heap[left]: + largest = left + if len(self.heap) > right and self.heap[largest] < self.heap[right]: + largest = right + if largest!=index: + self._swap(index, largest) + self._bubbleDown(largest) + + def printHeap(self): + all_hp_element = [] + for i in self.heap: + if i!=0: + all_hp_element.append(i) + return all_hp_element + + \ No newline at end of file diff --git a/Data Structure/Heap/test_heap.py b/Data Structure/Heap/test_heap.py new file mode 100644 index 0000000..c7fa85d --- /dev/null +++ b/Data Structure/Heap/test_heap.py @@ -0,0 +1,24 @@ +import unittest +from heap import MaxHeap + +class MaxHeapTestCase(unittest.TestCase): + """ Test for Heap.py""" + def test(self): + # test data + ob = MaxHeap() + ob.insert(10) + ob.insert(5) + ob.insert(6) + ob.insert(3) + ob.insert(8) + ob.insert(20) + + ob.pop() + ob.pop() + + get_max = ob.getMax() + self.assertEqual(ob.printHeap(), [8, 6, 3, 5], msg="Heap Element Should be [8,6,3,5]") + self.assertEqual(get_max, 8, msg="Max Element is not matched") + +if __name__ == '__main__': + unittest.main() From c2d18dc9d94c4a0ffffbc23b54e98fd8d011184f Mon Sep 17 00:00:00 2001 From: shaonty Date: Sun, 25 Mar 2018 13:02:33 +0600 Subject: [PATCH 2/6] Heap README.md file add --- Data Structure/Heap/README.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/Data Structure/Heap/README.md b/Data Structure/Heap/README.md index e69de29..52c10df 100644 --- a/Data Structure/Heap/README.md +++ b/Data Structure/Heap/README.md @@ -0,0 +1,32 @@ +# Heap + +A **Heap** is a tree based data structure and it is a complete binary tree which satisfies the heap ordering property. The ordering can be one of two types: + +the **min-heap property:** the value of each node is greater than or equal to the value of its parent, with the minimum-value element at the root. +the **max-heap property:** the value of each node is less than or equal to the value of its parent, with the maximum-value element at the root. + +**Basic Operations:** + +Following are the basic operations supported by a list. + +* **Insertion** − Adds an element at the max heap. + +* **Deletion** − Deletes an element at the beginning of the heap. + +* **Display** − Displays the complete heap. + +* **Max** − Get the max element from the heap. + + +#### Complexity Analysis +Algorithm Average Worst case +Space O(n) O(n) +Search O(n) O(n) +Insert O(1) O(log n) +Delete O(log n) O(log n) +Peek O(1) O(1) + +### More on this topic +- https://en.wikipedia.org/wiki/Heap_(data_structure) +- https://www.hackerearth.com/practice/data-structures/trees/heapspriority-queues/tutorial/ +- https://www.geeksforgeeks.org/binary-heap/ From 24f5dbf8b8f9905d1727088c21fa3e273d1a6bdc Mon Sep 17 00:00:00 2001 From: shaonty Date: Sun, 25 Mar 2018 13:55:12 +0600 Subject: [PATCH 3/6] Heap readme file add --- Data Structure/Heap/README.md | 15 ++++++++------- .../Heap/max_heap_deletion_animation.gif | Bin 0 -> 107164 bytes 2 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 Data Structure/Heap/max_heap_deletion_animation.gif diff --git a/Data Structure/Heap/README.md b/Data Structure/Heap/README.md index 52c10df..f825951 100644 --- a/Data Structure/Heap/README.md +++ b/Data Structure/Heap/README.md @@ -3,8 +3,11 @@ A **Heap** is a tree based data structure and it is a complete binary tree which satisfies the heap ordering property. The ordering can be one of two types: the **min-heap property:** the value of each node is greater than or equal to the value of its parent, with the minimum-value element at the root. + the **max-heap property:** the value of each node is less than or equal to the value of its parent, with the maximum-value element at the root. +![heap](max_heap_deletion_animation.gif) + **Basic Operations:** Following are the basic operations supported by a list. @@ -19,13 +22,11 @@ Following are the basic operations supported by a list. #### Complexity Analysis -Algorithm Average Worst case -Space O(n) O(n) -Search O(n) O(n) -Insert O(1) O(log n) -Delete O(log n) O(log n) -Peek O(1) O(1) - +- Space - O(n) +- Search - O(n) +- Insertion - O(1) +- Delete - O(log n) (Deletion from beginning) +- Peek - O(1) ### More on this topic - https://en.wikipedia.org/wiki/Heap_(data_structure) - https://www.hackerearth.com/practice/data-structures/trees/heapspriority-queues/tutorial/ diff --git a/Data Structure/Heap/max_heap_deletion_animation.gif b/Data Structure/Heap/max_heap_deletion_animation.gif new file mode 100644 index 0000000000000000000000000000000000000000..3dc54d30a14489ce0df91c821f076fcee51885a5 GIT binary patch literal 107164 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 P{}JXt!u)@mFopgH8To`I literal 0 HcmV?d00001 From 0cbf7ce78fe03be6efea05053d1587a059e207ba Mon Sep 17 00:00:00 2001 From: shaonty Date: Tue, 27 Mar 2018 14:11:09 +0600 Subject: [PATCH 4/6] heap updated --- Data Structure/Heap/heap.py | 79 +++++++++++--------------------- Data Structure/Heap/test_heap.py | 15 ++++-- 2 files changed, 38 insertions(+), 56 deletions(-) diff --git a/Data Structure/Heap/heap.py b/Data Structure/Heap/heap.py index e68ba1b..29fea1d 100644 --- a/Data Structure/Heap/heap.py +++ b/Data Structure/Heap/heap.py @@ -3,75 +3,52 @@ class MaxHeap(object): - HEAP_SIZE = 10 - - def __init__(self): - self.heap = [0]*MaxHeap.HEAP_SIZE - self.currentPosition = -1 + def __init__(self, maxSize=None): + self.heap = [float("inf")] # heap starting from index 1 + self.HEAP_SIZE = maxSize def _swap(self,i,j): self.heap[i], self.heap[j] = self.heap[j], self.heap[i] def _heapIsFull(self): - if self.currentPosition == MaxHeap.HEAP_SIZE: - return True - return False + return (self.HEAP_SIZE != None and len(self.heap) >= self.HEAP_SIZE) def insert(self, item): if self._heapIsFull(): "Heap is full..." - return - self.currentPosition+=1 - self.heap[self.currentPosition] = item - # adjust parent node item - self._bubbleUp(self.currentPosition) + else: + self.heap.append(item) + # adjust parent node item + self._bubbleUp(len(self.heap)-1) def _bubbleUp(self, currentPosition): - index = currentPosition - parrentIndex = index//2 + if currentPosition >= 2: # no need to do bubbleUp for 1 element + index = currentPosition + parrentIndex = index//2 - if parrentIndex>=0 and self.heap[parrentIndex] < self.heap[index]: - self._swap(parrentIndex, index) - # index = parrentIndex - self._bubbleUp(parrentIndex) + if parrentIndex >= 0 and self.heap[parrentIndex] < self.heap[index]: + self._swap(parrentIndex, index) + self._bubbleUp(parrentIndex) - - def getMax(self): - if self.heap[0]: - return self.heap[0] - else: - return "Empty Heap" + def peek(self): + return self.heap[1] if len(self.heap) > 1 else False def pop(self): - if self.currentPosition > 1: - # swap first element with last element - self._swap(0,self.currentPosition) - del self.heap[self.currentPosition] - # adjust parent node item - self._bubbleDown(0) - elif self.currentPosition == 1: - del self.heap[0] - else: - print "No deletion operation for empty heap" - return "False" + element = self.peek() + if element: + self._swap(1, len(self.heap) - 1) + self.heap.pop() + self._bubbleDown(1) + return element def _bubbleDown(self, index): - left = 2*index+1 - right = 2*index+2 + leftChildIndex = 2 * index + rightChildIndex = 2 * index + 1 largest = index - if len(self.heap) > left and self.heap[largest] < self.heap[left]: - largest = left - if len(self.heap) > right and self.heap[largest] < self.heap[right]: - largest = right + if len(self.heap) > leftChildIndex and self.heap[largest] < self.heap[leftChildIndex]: + largest = leftChildIndex + if len(self.heap) > rightChildIndex and self.heap[largest] < self.heap[rightChildIndex]: + largest = rightChildIndex if largest!=index: self._swap(index, largest) self._bubbleDown(largest) - - def printHeap(self): - all_hp_element = [] - for i in self.heap: - if i!=0: - all_hp_element.append(i) - return all_hp_element - - \ No newline at end of file diff --git a/Data Structure/Heap/test_heap.py b/Data Structure/Heap/test_heap.py index c7fa85d..bb9edd3 100644 --- a/Data Structure/Heap/test_heap.py +++ b/Data Structure/Heap/test_heap.py @@ -12,13 +12,18 @@ def test(self): ob.insert(3) ob.insert(8) ob.insert(20) - + self.assertEqual(ob.peek(), 20, msg="Max Element is not matched") + ob.pop() + ob.pop() + self.assertEqual(ob.peek(), 8, msg="Max Element is not matched") + ob.pop() + self.assertEqual(ob.peek(), 6, msg="Max Element is not matched") ob.pop() ob.pop() - - get_max = ob.getMax() - self.assertEqual(ob.printHeap(), [8, 6, 3, 5], msg="Heap Element Should be [8,6,3,5]") - self.assertEqual(get_max, 8, msg="Max Element is not matched") + ob.pop() + self.assertEqual(ob.peek(), False, msg="Max Element is not matched") if __name__ == '__main__': unittest.main() + + From 0566faa95bb759ee0c64e8646826336565f86483 Mon Sep 17 00:00:00 2001 From: shaonty Date: Tue, 27 Mar 2018 14:41:42 +0600 Subject: [PATCH 5/6] updated --- Data Structure/Heap/heap.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Data Structure/Heap/heap.py b/Data Structure/Heap/heap.py index 29fea1d..90ee5df 100644 --- a/Data Structure/Heap/heap.py +++ b/Data Structure/Heap/heap.py @@ -4,7 +4,7 @@ class MaxHeap(object): def __init__(self, maxSize=None): - self.heap = [float("inf")] # heap starting from index 1 + self.heap = [] self.HEAP_SIZE = maxSize def _swap(self,i,j): @@ -22,7 +22,7 @@ def insert(self, item): self._bubbleUp(len(self.heap)-1) def _bubbleUp(self, currentPosition): - if currentPosition >= 2: # no need to do bubbleUp for 1 element + if currentPosition >= 1: # no need to do bubbleUp for 1 element index = currentPosition parrentIndex = index//2 @@ -31,19 +31,19 @@ def _bubbleUp(self, currentPosition): self._bubbleUp(parrentIndex) def peek(self): - return self.heap[1] if len(self.heap) > 1 else False + return self.heap[0] if self.heap else False def pop(self): element = self.peek() if element: - self._swap(1, len(self.heap) - 1) + self._swap(0, len(self.heap) - 1) self.heap.pop() - self._bubbleDown(1) + self._bubbleDown(0) return element def _bubbleDown(self, index): - leftChildIndex = 2 * index - rightChildIndex = 2 * index + 1 + leftChildIndex = 2 * index + 1 + rightChildIndex = 2 * index + 2 largest = index if len(self.heap) > leftChildIndex and self.heap[largest] < self.heap[leftChildIndex]: largest = leftChildIndex From 2e982e5b88a794837c6bf1d297b2f6869af929e5 Mon Sep 17 00:00:00 2001 From: shaonty Date: Tue, 27 Mar 2018 15:49:39 +0600 Subject: [PATCH 6/6] updated --- Data Structure/Heap/heap.py | 12 ++++++------ Data Structure/Heap/test_heap.py | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Data Structure/Heap/heap.py b/Data Structure/Heap/heap.py index 90ee5df..7c1e4fb 100644 --- a/Data Structure/Heap/heap.py +++ b/Data Structure/Heap/heap.py @@ -24,14 +24,14 @@ def insert(self, item): def _bubbleUp(self, currentPosition): if currentPosition >= 1: # no need to do bubbleUp for 1 element index = currentPosition - parrentIndex = index//2 + parentIndex = (index-1)//2 - if parrentIndex >= 0 and self.heap[parrentIndex] < self.heap[index]: - self._swap(parrentIndex, index) - self._bubbleUp(parrentIndex) + if parentIndex >= 0 and self.heap[parentIndex] < self.heap[index]: + self._swap(parentIndex, index) + self._bubbleUp(parentIndex) def peek(self): - return self.heap[0] if self.heap else False + return self.heap[0] if self.heap else None def pop(self): element = self.peek() @@ -42,7 +42,7 @@ def pop(self): return element def _bubbleDown(self, index): - leftChildIndex = 2 * index + 1 + leftChildIndex = 2 * index + 1 rightChildIndex = 2 * index + 2 largest = index if len(self.heap) > leftChildIndex and self.heap[largest] < self.heap[leftChildIndex]: diff --git a/Data Structure/Heap/test_heap.py b/Data Structure/Heap/test_heap.py index bb9edd3..30ba788 100644 --- a/Data Structure/Heap/test_heap.py +++ b/Data Structure/Heap/test_heap.py @@ -21,7 +21,7 @@ def test(self): ob.pop() ob.pop() ob.pop() - self.assertEqual(ob.peek(), False, msg="Max Element is not matched") + self.assertEqual(ob.peek(), None, msg="Max Element is not matched") if __name__ == '__main__': unittest.main()