Я работаю над реализацией варианта быстрой сортировки, основанной на алгоритме выбора для выбора хорошего элемента поворота. . Обычная мудрость состоит в том, чтобы разделить массив на 5-элементные блоки, взять медиану каждого из них, а затем рекурсивно применить тот же подход блокировки к полученным медианам, чтобы получить «медианное значение медиан».
Что меня смущает, так это выбор блоков из 5 элементов, а не из 3 элементов. Мне кажется, что с 5-элементными блоками вы выполняете n / 4 = n / 5 + n / 25 + n / 125 + n / 625 + ...
медиана из 5 операций, тогда как с 3-элементными блоками вы выполняете n / 2 = n / 3 + n / 9 + n / 27 + n / 81 + ...
медиана из 3 операций. Поскольку каждая медиана из 5 представляет собой 6 сравнений, а каждая медиана из 3 - это 2 сравнения, в результате получается 3 * n / 2
сравнений с использованием медианы 5 и n
сравнения с использованием медианы 3.
Может ли кто-нибудь объяснить это несоответствие, и какова может быть мотивация использования 5-элементных блоков? Я не знаком с обычными методами применения этих алгоритмов, так что, возможно, есть какой-то способ вырезать некоторые шаги и при этом подойти «достаточно близко» к медиане, чтобы обеспечить хороший поворот, и этот подход лучше работает с 5-элементными блоками?