Алгоритм рандомізованого відбору такий:
Введення: Масив з n (чітких, для простоти) чисел та числа k ∈ [ n ]
Вихід: "ранговий елемент" A (тобто той, який знаходиться в положенні k, якщо A було відсортовано)
Спосіб:
- Якщо є один елемент в , повернути його
- Виберіть елемент ("стрижень") рівномірно навмання
- Обчисліть множини і R = { a ∈ A : a > p }
- Якщо , повертає ранг K елемент L .
- В іншому випадку поверніть ранг елемент R
Мені було задано наступне питання:
Нехай , так що ви шукаєте медіани, і нехай & alpha ; ∈ ( 1 / +2 , 1 ) буде постійним. Яка ймовірність того, що при першому рекурсивному виклику множина, що містить медіану, має розмір не більше α n ?
Мені відповіли, що відповідь - , з обґрунтуванням "Вибраний шарнір повинен лежати між 1 - α і α разів більше вихідного масиву"
Чому? Як , будь-який елемент, обраний як шарнір, або більший, або менший, ніж половина початкових елементів. Медіана завжди лежить у більшому підматриці, оскільки елементів у розділеному підмасиві завжди менше, ніж зведене.
Якщо стрижень лежить у першій половині початкового масиву (менше половини з них), медіана неодмінно опиниться у другій більшій половині, бо як тільки буде знайдена медіана, вона повинна знаходитися в середньому положенні масиву, і все, перш ніж стрижень менше, як зазначено вище.
Якщо шарнір лежить у другій половині початкового масиву (більше половини елементів), медіана, безумовно, спочатку більша половина, з тієї ж причини, все до того, як стрижень вважається меншим.
Приклад:
3 4 5 8 7 9 2 1 6 10
Медіана 5.
Припустимо, що вибраний стрижень дорівнює 2. Отже, після першої ітерації він стає:
1 2 .... більша частина ....
Тільки обмінюються 1
і 2
обмінюються після першої ітерації. Число 5 (медіана) все ще знаходиться в першій більшій половині (відповідно до точки 2). Справа в тому, що медіана завжди лежить на більшій половині, як вона може мати шанс залишитися в меншому підмарітті?