В рамках домашнего задания, посвященного реализации интросорта, меня спрашивают, почему используется heapsort, а не mergesort (или другие алгоритмы в этом отношении).
Интросорт - это гибридный алгоритм сортировки, который обеспечивает как быструю среднюю производительность, так и (асимптотически) оптимальную производительность в худшем случае. Он начинается с быстрой сортировки и переключается на heapsort, когда глубина рекурсии превышает уровень, основанный на (логарифме) числа сортируемых элементов. ( Википедия , получено 2014-May-06.)
Единственная причина, по которой я могу придумать, заключается в том, что heapsort «на месте» ... Но я не очень понимаю, почему это здесь имеет значение.