Developer Toolbox

Heapsort

Arranges the list into a heap, a tree where every parent is bigger than its children. Then it moves the biggest value to the end, again and again.

  • Ω(n log n)
  • Θ(n log n)
  • O(n log n)
  • O(1)
  • no
  • yes
  • comparing
  • moving
  • in final place
0 / 299 steps
Comparisons Swaps

Press play: the lines show how the cost grows as the sort runs

Press play or step through the algorithm.

Space: play or pause. Left and right arrows: step. Home and End: jump.

Try this: Pick a reversed list. Building the heap takes almost no swaps, then every round moves the biggest value to the end.

How it works

The heap is stored in the list itself: the value at position i has its children at positions 2i+1 and 2i+2, and the biggest value is always at the front. Swap it to the end, make the heap one smaller and repair it. The sorted part grows from the right.

When it is a good choice

When you need speed that stays good even in the worst case and no extra memory, for example on small devices. On average it is slower than quicksort, so it is often used as a safety net.