Яка перевага рандомізованого Quicksort?


18

У своїй книзі рандомізованих алгоритми , Motwani і Raghavan відкрити введення з описом їх функції RandQS - рандомізованих - де швидкої сортуванням стрижень, який використовується для поділу безлічі на дві частини, вибирається випадковим чином .

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

Я припускаю, що я не бачу цього: якщо початковий набір знаходиться у випадковому порядку, яка різниця між вибором елемента у випадковому місці у наборі та вибором елемента у фіксованому положенні?

Чи може хтось просвітити мене досить простими словами?

Відповіді:


19

Якщо вхідний масив розподілений рівномірно, то (як ви зазначали) немає різниці між тим, що завжди вибирати елемент у фіксованому положенні (наприклад, середній, як ви пропонуєте), або підбирати елемент, обраний навмання.

Якщо ж ваш вхідний масив насправді не у випадковому порядку (що трапляється практично у всіх практичних сценаріях), тоді потрібно або «придушити» масив для того, щоб елементи в ньому розмістилися у випадковому порядку, або ( рівнозначно) завжди сприймайте випадковий елемент як стрижневий. Це забезпечує фазу розбиття кварцових розділів масивів на підмасиви майже однакового розміру, а отже, очікуваний час роботи залишається О(нжурналн)

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


7
О(нжурналн)О(н2)

н!1н!

@ RobertS.Barnes Так
Jernej

4

Як зазначає Джерней, припущення про те, що всі перестановки вхідних даних однаково ймовірні, не завжди відповідає дійсності. Першою ідеєю може бути перестановка вхідного масиву. Це спрацювало б, але простіше проаналізувати ситуацію, коли стрижень вибирається навмання. Це також відоме як випадкова вибірка .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.