Вот вопрос:
Есть 5 отсортированных списков A, B, C, D, E, которые имеют одинаковую длину n.Вопрос состоит в том, чтобы найти алгоритм, который может медианить этого 5 списка за O (logn) время.Я думаю об общей идее, но не могу понять, какую именно сложность она требует.
Предположим, медиана A, B, C, D, E - это a, b, c, d, e.И у нас есть a<b<c<d<e
.Очевидно, что я мог бы выбросить первую половину массива A и последнюю половину массива E. Теперь у меня есть 5 новых массивов: B, C, D остаются прежними, у каждого есть n чисел;A и E имеют n / 2 числа слева.Затем я вычисляю медиану A и E как a и e, сравнивая их с b, c, d.Если новый порядок 5 медиан равен a'<b<e'<c<d
, то я пропускаю первую половину a '(n / 4 числа) и последние n / 4 числа массива D, потому что нам нужно отбросить равные числа с обеих сторонокончательной медианы.Процесс продолжается ...
У меня такое ощущение, что алгоритм O (logn).Но я не знаю точного доказательства.На первых шагах входа в систему мы, безусловно, можем уменьшить число кандидатов до 3n, суммируя все оставшиеся номера из 5 списков.В первый раз мы выбрасываем n чисел, во второй раз как минимум n / 2 числа, в третий раз n / 4 числа и так далее.Тем не менее, я не знаю, как анализировать после того, как я получу 3n оставшихся чисел.
Может ли этот алгоритм действительно дать мне O (logn)?