Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.65 KB | None | 0 0
  1. def heap_sort(a):
  2.     build_heap(a)
  3.     heap_size = len(a) - 1
  4.     for i in range(len(a) - 1, 0, -1):
  5.         a[0], a[i] = a[i], a[0]
  6.         heap_size -= 1
  7.         heapify(a, 0, heap_size)
  8.     return a
  9.  
  10. def build_heap(a):
  11.     heap_size = len(a) - 1
  12.     for i in range(len(a)//2, -1, -1):
  13.         heapify(a, i, heap_size)
  14.  
  15. def heapify(a, i, heap_size):
  16.     l = 2 * i
  17.     r = 2 * i + 1
  18.     if l <= heap_size and a[l] > a[i]:
  19.         largest = l
  20.     else:
  21.         largest = i
  22.     if r <= heap_size and a[r] > a[largest]:
  23.         largest = r
  24.     if largest != i:
  25.         a[i], a[largest] = a[largest], a[i]
  26.         heapify(a, largest, heap_size)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement