Я работаю на основе анализа детерминированных медианных результатов в предположении, что вход делится на 3 части, а не на 5, и вопрос в том, где он ломается?
алгоритм определения детерминированной медианы:
SELECT (i, n)
Разделите n элементов на группы по 5 человек.
Найти медиану каждой группы из 5 элементов по порядку.
Рекурсивно ВЫБЕРИТЕ медиану х ⎣n / 5⎦
медианы группы должны быть осью.
Перегородка вокруг оси x. Пусть k = ранг (х)
4.Если i = k, то вернуть x
иначе, если я
затем рекурсивно ВЫБЕРИТЕ
наименьший элемент в нижней части
еще рекурсивно ВЫБРАТЬ (i – k) -й
наименьший элемент в верхней части
Я прошел анализ алгоритма и полагаю, что для шагов 1 и 3 потребуется O (n), где просто требуется постоянное время, чтобы найти медиану из 5 элементов, а для шага 2 - T (n / 5) .so по крайней мере 3/10 элементов имеют ≤ p, а по крайней мере 3/10 массива - ≥ p, поэтому Шаг 4 будет T (7n / 10) и получит повторение.
T (n) ≤ cn + T (n / 5) + T (7n / 10),
но когда я разделю элементы в группе из 3, скажем, 9 элементов, и я разделил их на группы так, чтобы:
{1,2,10} {4,11,14}, {15,20,22}
Я получил медианы 2,11,20 и р = 11.
в целом в группе из пяти, скажем, g = n / 5 групп и, по крайней мере, ⌈g / 2⌉
из них (те группы, медиана которых ≤ p), по крайней мере три из пяти элементов ≤ p. поэтому общее количество элементов ≤ p составляет не менее 3⌈g / 2⌉ ≥ 3n / 10. НО в группе из 3 мы можем получить все три элемента МЕНЬШЕ, чем р. и вот я думаю, что алгоритм сломается !!
Правильно ли я понял идею?