он не расходует лишней памяти в отличие от qsort.
Также у него реальный n*lg(n) для худшего случая. Стандартный qsort дает n*lg(n) только в среднем. Но на практике heapsort медленнее qsort.
Интересно, почему он на практике медленнее при том что у него O(n) выходит не хуже qsort? Для какого применения(тип данных, типичная длина последовательности) это справедливо?
Млин, почитай любую книгу. У heapsort O(n*logn) с большой константой C (по сравнению с quicksort), поэтому в среднем он работает медленнее, но в худшем случае (когда quicksort не дает O(n*logn)) он быстрее quicksort.