heapsort


The heapsortMathworldPlanetmath algorithmMathworldPlanetmath is an elegant application of the heap data structure to the sorting problem. It consists of building a heap out of some list of n elements, and the removing a maximal value one at a time.

The Algorithm

The following pseudocode illustrates the heapsort algorithm. It builds upon the heap insertion and heap removal algorithms.

Algorithm HeapSort((A,⪯,n))
Input: List A of n elements
Output: A sorted, such that ⪯ is a total orderMathworldPlanetmath over A

begin
          for i←2⁢𝐭𝐨𝐧 do

HeapInsert(A,⪯,i-1,A⁢[i])

for i←n⁢𝐝𝐨𝐰𝐧𝐭𝐨𝟐 do

A⁢[i-1]←𝐇𝐞𝐚𝐩𝐑𝐞𝐦𝐨𝐯𝐞⁢(𝐇,𝐢,⪯)


end

Analysis

Note that the algorithm given is based on a top-down heap insertion algorithm. It is possible to get better results through bottom-up heap construction.

Each step of each of the two for loops in this algorithm has a runtime complexity of 𝒪⁢(log⁡i). Thus overall the heapsort algorithm is 𝒪⁢(n⁢log⁡n).

Heapsort is not quite as fast as quicksortMathworldPlanetmath in general, but it is not much slower, either. Also, like quicksort, heapsort is an in-place sorting algorithm, but not a stable sorting algorithm. Unlike quicksort, its performance is guaranteed, so despite the orderingMathworldPlanetmath of its input its worst-case complexity is 𝒪⁢(n⁢log⁡n). Given its simple implementation and reasonable performance, heapsort is ideal for quickly implementing a decent sorting algorithm.

Title heapsort
Canonical name Heapsort
Date of creation 2013-03-22 12:31:02
Last modified on 2013-03-22 12:31:02
Owner mathcam (2727)
Last modified by mathcam (2727)
Numerical id 9
Author mathcam (2727)
Entry type Algorithm
Classification msc 68P10
Related topic HeapInsertionAlgorithm
Related topic HeapRemovalAlgorithm
Related topic Heap
Related topic SortingProblem