Copy Code code as follows:
#!/usr/bin/python
Import Sys
def left_child (node):
Return node * 2 + 1
def right_child (node):
Return node * 2 + 2
def parent (node):
if (node% 2):
Return (I-1)/2
Else
Return (i-2)/2
def max_heapify (Array, I, heap_size):
L = left_child (i)
R = Right_child (i)
largest = I
If L < heap_size and array[l] > Array[i]:
largest = L
If r < heap_size and Array[r] > Array[largest]:
Largest = R
If largest!= I:
Array[i], array[largest] = Array[largest], array[i]
Max_heapify (array, largest, heap_size)
def build_max_heap (Array):
For I in range (len (array)/2,-1,-1):
Max_heapify (Array, I, Len (array))
def heap_sort (Array):
Build_max_heap (Array)
For I in range (len (array)-1, 0,-1):
Array[0], array[i] = Array[i], array[0]
Max_heapify (array, 0, i)
if __name__ = = "__main__":
Array = [0, 2, 6, 98, 34,-5, 23, 11, 89, 100, 7]
Heap_sort (Array)
For a in array:
Sys.stdout.write ("%d"% a)