Мне был дан этот алгоритм, который вычисляет медиану массива и разделяет остальные элементы вокруг него.
Он помещает все элементы, меньшие, чем медиана в наборе A1, все равные ему в A2 и все те, которые больше в A3. Если A1 больше 1, он рекурсивно входит в него, и то же самое происходит для A3. Он заканчивается после копирования конкатенации A1, A2 и A3 в A.
Я знаю, что это очень похоже на Quickselect, но я не знаю, как поступить, чтобы выяснить сложность времени в худшем случае.
Что я знаю, так это то, что в быстрой сортировке сложность времени равна T (n) = n -1 + T (a) + T (n -a-1), где n - 1 для раздела, T (a) рекурсивный вызов в первой части, а t (na-1) рекурсивный вызов в последней части. В этом случае худший сценарий произошел, когда ось всегда была самым большим или самым маленьким элементом в массиве.
Но теперь, поскольку у нас медиана в качестве оси, каким может быть наихудший случай?