Skip to content

Commit d1ac134

Browse files
Merge pull request #72 from ankit167/Heap_Data_Structure
Code for Heap data structure
2 parents 8fe29ff + fa1e65e commit d1ac134

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

Diff for: data_structures/Heap/heap.py

+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#!/usr/bin/python
2+
3+
class Heap:
4+
def __init__(self):
5+
self.h = []
6+
self.currsize = 0
7+
8+
def leftChild(self,i):
9+
if 2*i+1 < self.currsize:
10+
return 2*i+1
11+
return None
12+
13+
def rightChild(self,i):
14+
if 2*i+2 < self.currsize:
15+
return 2*i+2
16+
return None
17+
18+
def maxHeapify(self,node):
19+
if node < self.currsize:
20+
m = node
21+
lc = self.leftChild(node)
22+
rc = self.rightChild(node)
23+
if lc is not None and self.h[lc] > self.h[m]:
24+
m = lc
25+
if rc is not None and self.h[rc] > self.h[m]:
26+
m = rc
27+
if m!=node:
28+
temp = self.h[node]
29+
self.h[node] = self.h[m]
30+
self.h[m] = temp
31+
self.maxHeapify(m)
32+
33+
def buildHeap(self,a):
34+
self.currsize = len(a)
35+
self.h = list(a)
36+
for i in range(self.currsize/2,-1,-1):
37+
self.maxHeapify(i)
38+
39+
def getMax(self):
40+
if self.currsize >= 1:
41+
me = self.h[0]
42+
temp = self.h[0]
43+
self.h[0] = self.h[self.currsize-1]
44+
self.h[self.currsize-1] = temp
45+
self.currsize -= 1
46+
self.maxHeapify(0)
47+
return me
48+
return None
49+
50+
def heapSort(self):
51+
size = self.currsize
52+
while self.currsize-1 >= 0:
53+
temp = self.h[0]
54+
self.h[0] = self.h[self.currsize-1]
55+
self.h[self.currsize-1] = temp
56+
self.currsize -= 1
57+
self.maxHeapify(0)
58+
self.currsize = size
59+
60+
def insert(self,data):
61+
self.h.append(data)
62+
curr = self.currsize
63+
self.currsize+=1
64+
while self.h[curr] > self.h[curr/2]:
65+
temp = self.h[curr/2]
66+
self.h[curr/2] = self.h[curr]
67+
self.h[curr] = temp
68+
curr = curr/2
69+
70+
def display(self):
71+
print (self.h)
72+
73+
def main():
74+
l = list(map(int,raw_input().split()))
75+
h = Heap()
76+
h.buildHeap(l)
77+
h.heapSort()
78+
h.display()
79+
80+
if __name__=='__main__':
81+
main()
82+
83+

0 commit comments

Comments
 (0)