Обсуждение:Пирамидальная сортировка

Последнее сообщение: 9 лет назад от Alex Wolf в теме «Некорректный код»

Некорректный код

править

Код для с++ некорректен! Уважаемые программисты, тестируйте свои программы! Код на странице от 12:10, 10 июня 2008 валится на тесте: "0 1 2". Код исправил. --MDA 11:00, 29 июня 2008 (UTC)Ответить

Не заменяйте D на C, это не опечатка! Код получается нерабочий после такой замены! Alex Wolf 22:35, 25 октября 2014 (UTC)Ответить

?

править

Так логарифм же не десятичный!!! А двойной! --80.93.115.10 05:58, 5 апреля 2008 (UTC)Ответить

Алгоритм очень понравился. Поэтому добавил код на паскале. ShadowTheAge P.S. да, чуть не забыл комментарии

Неточность?

править

Кстати, почему это алгоритм требует память не зависящую от размера массива О(1)? Ведь поиск нового подходящего места в массиве - это рекурентная функция и памяти на эту функцию требуется   ShadowTheAge 16:28, 26 мая 2008 (UTC)Ответить


Тут место под хип используется в самом массиве. А по мере удаления элементов из хипа освобождается место под только что удалённый элемент хипа. Т.е. в ненулевой и непоследний момент времени в массиве будут и хип и кусок отсортированного массива. --Shaekyrian 08:13, 12 мая 2010 (UTC)Ответить

Достаточно избавиться от хвостовой рекурсии и расходы будут O(1). --ViLco 19:06, 28 августа 2011 (UTC)Ответить

Можно реализовать вообще без рекурсии, см. например https://medium.com/@dimko1/%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B-%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8-heapsort-796ba965018b