Posts

Showing posts from November, 2013

Heap Sort Implementation in Python

Here I share my Python implementation of heap sort algorithm . Heap sort is O(n log n) sorting algorithm though quicksort is used more frequently. You should learn heap sort to implement priority queue or at least learn the internals of priority queue. :) In the Python code, I directly followed the heap sort algorithm presented in Introduction to Algorithms by CLRS. # heapsort def max_heapify(li, i, heap_size): l = i * 2 #left(i) r = l + 1 #right(i) if l <= heap_size and li[l] > li[i]: largest = l else: largest = i if r <= heap_size and li[r] > li[largest]: largest = r if i != largest: li[i], li[largest] = li[largest], li[i] max_heapify(li, largest, heap_size) def build_max_heap(li, heap_size): for i in range(heap_size/2 - 1, 0, -1): max_heapify(li, i, heap_size) def heap_sort(li, heap_size): build_max_heap(li, heap_size) for i in range(len(li[1:]), 1, -1): li[1], li[i] = li[i], li[1] heap_size = heap_size - 1 m