Heapsort

powered by FreeFind

Modified: 

Build_Max_Heap (A)
1 heap-size[A] ¬ length[A]
  forall j; i<j≤length[A];
      A[ j ] ³ A[Left( j )] && A[ j ] ³ A[Right( j )] 
2 for i ¬ ëlength[A]/2û downto 1 do
3    Max_Heapify (A, i)

 

Heapsort (A)
-- alters A
-- pre:  location 1 of A satisfies the max heap property
-- post: A is in non-decreasing sorted order
1 Build_Max_Heap (A)
2    for i ¬ length[A] downto 2 do
3       exchange A[1] « A[i]
4       heap-size[A] ¬ heap-size[A] - 1
5       Max_Heapify (A, 1)