Чому інтросорт використовує гипсорт, а не злиття?


9

У рамках домашнього завдання, що стосується впровадження інтросортату, мене запитують, чому для цього використовується гипсорт, а не об'єднання (або інші алгоритми ). О(нжурнал⁡(н))

Introsort - це гібридний алгоритм сортування, який забезпечує як швидку середню продуктивність, так і (асимптотично) оптимальну найгіршу ефективність. Він починається з швидкості ретрансляції і переходить на велику кількість, коли глибина рекурсії перевищує рівень, заснований на (логарифмі) кількості сортованих елементів. ( Вікіпедія , знайдено 2014-травня-06.)

Єдиною причиною, про яку я можу подумати, є те, що нагромадження "на місці" ... Але я не розумію, чому це має значення тут.


3
Якщо інтросорт є частиною питання, вам доведеться сказати нам, що це таке, перш ніж ми зможемо щось сказати.
— Луї

1
Ласкаво просимо до інформатики ! Зауважте, що ви можете використовувати LaTeX тут для набору математики більш читаним способом. Дивіться тут короткий вступ.
— FrankW

Нас просто просять ввести псевдокод для введення сортування, а згодом нас запитують, чому він використовує гипсорт, а не злиття.
— користувач672009

@ user672009 У цьому випадку запишіть код для будь-якого і подивіться, що ви знайдете. Причина може бути, а може і не бути пов'язаною з виконанням.
— Рафаель

2
Я зробив висновок, що оскільки сортується на місці, нам потрібно використовувати ще один алгоритм сортування місця. Однак я відкритий для введення.
— користувач672009

Відповіді:


9

2 недоліки швидкості скорочення полягають у тому, що йому потрібен додатковий простір (для збереження несортованих інтервалів), а неправильний вибір повороту (або надумані послідовності, призначені для того, щоб вибрати неправильний шар), може призвести до того, що він буде алгоритм додаткового простору часу та .О(журнал⁡н)О(н2)О(н)

Перехід на велику кількість, коли глибина рекурсії стає занадто великою (приблизно ) означає, що у нас є гарантоване верхнє обмеження, яке становить час та додатковий простір.журнал⁡нО(нжурнал⁡н)О(журнал⁡н)

Необхідність додаткового простору Heapsort робить його кращим вибором mergsort, де для надуманого масиву, який міг би бути великим.О(1)О(н)н

Причина, що гипсорт не використовується для повного сортування, полягає в тому, що він повільніше, ніж кваксорт (частково завдяки прихованим константам у великому виразі O, а частково і в кеш-поведінці)


Але використовується купажка ... і я підозрюю, що це так, як кікспорт.
— user672009

Я підозрюю, що @ user672009 плутає ваше останнє речення. Я б запропонував уточнити, що інтрозорт не починається з великої кількості, тому що це повільніше.
— Мандрівна логіка

@ user672009, O(1)простір означає «на місці», а кікспорт не зовсім на місці, оскільки цього вимагаєO(lg⁡n)додатковий простір.
— Мандрівна логіка

Крім того, у кучері є набагато більше пропусків кеш-пам'яті, ніж у введення.
— noɥʇʎԀʎzɐɹƆ

Хороша реалізація Quicksort у найгіршому випадку не потребує простору O (n) до тих пір, поки вона запам'ятовує більший підінтервал на стеку та обробляє менший негайно.
— gnasher729
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.