Min Heap Python
#Implementing Heap Using Heapify Method in Python 3
#MaxHeapify,MinHeapify,Ascending_Heapsort,Descending_Heapsort
class heap:
def maxheapify(self,array):
n=len(array)
for i in range(n//2-1,-1,-1):
self._maxheapify(array,n,i)
def _maxheapify(self,array,n,i):
l=2*i+1
r=2*i+2
if l<n and array[l]>array[i]:
largest=l
else:
largest=i
if r<n and array[r]>array[largest]:
largest=r
if (largest!=i):
array[largest],array[i]=array[i],array[largest]
self._maxheapify(array,n,largest)
def minheapify(self,array):
n = len(array)
for i in range(n//2-1,-1,-1):
self._minheapify(array,n,i)
def _minheapify(self,array,n,i):
l=2*i+1
r=2*i+2
if l<n and array[l]<array[i]:
smallest = l
else:
smallest = i
if r < n and array[r]<array[smallest]:
smallest = r
if (smallest != i):
array[smallest], array[i] = array[i], array[smallest]
self._minheapify(array, n, smallest)
def descending_heapsort(self,array):
n = len(array)
for i in range(n // 2 - 1, -1, -1):
self._minheapify(array, n, i)
for i in range(n - 1, 0, -1):
array[0], array[i] = array[i], array[0]
self._minheapify(array, i, 0)
def ascending_heapsort(self,array):
n=len(array)
for i in range(n//2-1,-1,-1):
self._maxheapify(array,n,i)
for i in range(n-1,0,-1):
array[0],array[i]=array[i],array[0]
self._maxheapify(array,i,0)
b=[550,4520,3,2340,12]
a=heap()
a.maxheapify(b)
print('Max Heapify -->',b)
a.minheapify(b)
print('Min Heapify -->',b)
a.ascending_heapsort(b)
print('Ascending Heap Sort -->',b)
a.descending_heapsort(b)
print('Descending Heap Sort -->',b)
4.1
10
Heap Implementation at this link:
https://github.com/shreyasvedpathak/Data-Structure-Python/tree/master/Hashing
Thank you!
10
0
4.5
2
def max_heapify(A,k):
l = left(k)
r = right(k)
if l < len(A) and A[l] > A[k]:
largest = l
else:
largest = k
if r < len(A) and A[r] > A[largest]:
largest = r
if largest != k:
A[k], A[largest] = A[largest], A[k]
max_heapify(A, largest)
def left(k):
return 2 * k + 1
def right(i):
return 2 * k + 2
def build_max_heap(A):
n = int((len(A)//2)-1)
for k in range(n, -1, -1):
max_heapify(A,k)
A = [3,9,2,1,4,5]
build_max_heap(A)
print(A)
Thank you!
2
0
4
6
def min_heapify(A,k):
l = left(k)
r = right(k)
if l < len(A) and A[l] < A[k]:
smallest = l
else:
smallest = k
if r < len(A) and A[r] < A[smallest]:
smallest = r
if smallest != k:
A[k], A[smallest] = A[smallest], A[k]
min_heapify(A, smallest)
def left(k):
return 2 * k + 1
def right(k):
return 2 * k + 2
def build_min_heap(A):
n = int((len(A)//2)-1)
for k in range(n, -1, -1):
min_heapify(A,k)
A = [3,9,2,1,4,5]
build_min_heap(A)
print(A)
Thank you!
6
0
Are there any code examples left?
New code examples in category Python
-
Python 2023-04-11 03:04:20
-
Python 2022-03-27 22:40:04 pycharm no module named
-
Python 2022-03-27 22:25:05 assign multiple variablesin one line
-
Python 2022-03-27 22:20:02 levenshtein distance
-
Python 2022-03-27 21:35:09 get text from url python last slash
-
Python 2022-03-27 21:30:30 df concatenate df
-
Python 2022-03-27 21:25:09 python odd or even
-
Python 2022-03-27 21:15:32 python include function from another file
-
Python 2022-03-27 21:10:01 color module python
-
Python 2022-03-27 21:00:27 python tkinter cursor types