Алгоритм рандомизированного выбора следующий:
Входные данные: массив из 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). Дело в том, что медиана всегда лежит на большей половине, как она может иметь шанс остаться в меньшем подмассиве?