Объяснение алгоритма Median of Medians

Подход Median of medians очень популярен в алгоритмах секционирования типа quicksort, чтобы получить неплохую точку опоры, так что он равномерно разбивает массив. Его логика приведена в Википедии как:

Выбранный стержень меньше и меньше половины элементов в списке медианов, что составляет около n/10 элементов (1/2 * (n/5)) для каждой половины. Каждый из этих элементов является медианом 5, что делает его менее 2 других элементов и более 2 других элементов вне блока. Следовательно, стержень составляет менее 3 (n/10) элементов вне блока и больше, чем другие 3 (n/10) элементов вне блока. Таким образом, выбранная медиана разделяет элементы где-то между 30%/70% и 70%/30%, что обеспечивает наихудшее линейное поведение алгоритма.

Может кто-нибудь объяснить это немного ясно для меня. Мне трудно понять логику.

Ответ 1

Подумайте о следующем наборе чисел:

5 2 6 3 1

Медиана этих чисел 3. Теперь, если у вас есть номер n, если n > 3, то он больше, чем, по крайней мере, половина числа выше. Если n < 3, то оно меньше, чем, по меньшей мере, половины числа выше.

Итак, это идея. То есть для каждого набора из 5 чисел вы получаете свою медиану. Теперь у вас есть цифры n / 5. Это очевидно.

Теперь, если вы получите медиану этих чисел (назовите ее m), она больше половины из них и меньше другой половины (по определению медианы!). Другими словами, m больше, чем n / 10 чисел (которые сами были медианами небольших 5-элементных групп) и больше, чем другие числа n / 10 (которые снова были медианами небольших 5 групп элементов).

В приведенном выше примере мы увидели, что если медиана k и у вас есть m > k, то m также больше, чем 2 других числа (которые сами были меньше, чем k). Это означает, что для каждой из тех меньших 5 групп элементов, где m больше, чем его среда, m больше, чем два других числа. Это делает по крайней мере 3 числа (2 числа + самой медианной) в каждой из тех n / 10 малых 5 групп элементов, которые меньше, чем m. Следовательно, m не менее чем 3n/10 чисел.

Аналогичная логика для количества элементов m больше.

Ответ 2

Объяснение алгоритма медианы медианов для нахождения k-го наибольшего целого из n также можно найти здесь: http://cs.indstate.edu/~spitla/presentation.pdf