File tree Expand file tree Collapse file tree 1 file changed +83
-0
lines changed Expand file tree Collapse file tree 1 file changed +83
-0
lines changed Original file line number Diff line number Diff line change 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+
You can’t perform that action at this time.
0 commit comments