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