Я понимаю, что для быстрой сортировки и сортировки слияния требуется O(n)
вспомогательное пространство для созданных временных подмассивов, а для быстрой сортировки на месте требуется O(log n)
вспомогательное пространство для рекурсивных кадров стека. Но для сортировки кучи, похоже, имеет худший случай вспомогательного пространства O(n)
для создания временной кучи, даже если узлы просто указывают на фактические элементы.
Я наткнулся на это объяснение:
Только O (1) требуется дополнительное пространство, потому что куча встроена в массив, который нужно отсортировать.
Но я думаю, это означает, что исходный массив обязательно должен был быть реализован как нечто вроде дерева? Если исходный массив был всего лишь вектором, кажется, что память для кучи все равно должна быть выделена.