Нахождение k-порядковой статистики.
Определение
Нахождение k-порядковой статистики - это задача, которая заключается в нахождении элемента, занимающего k-ю позицию в отсортированном массиве (изначально массив не отсортирован). Например, если k равно 3, то мы ищем третий элемент в отсортированном массиве.
Один из эффективных алгоритмов для нахождения k-порядковой статистики - это алгоритм QuickSelect
, который основан на алгоритме QuickSort
. Алгоритм "QuickSelect" работает следующим образом:
- Выбираем опорный элемент из массива(случайно).
- Если длина массива 1, возвращаем ответ.
- Разбиваем массив на два подмассива: элементы, меньшие опорного(левый), и элементы, большие или равные опорному(правый).
- Если размер левого подмассива элементов, равен k-1, то опорный элемент является k-порядковой статистикой.
- Если размер левого подмассива элементов, больше k, то искомый элемент находится в этом подмассиве, рекурсивно применяем алгоритм QuickSelect([подмассив], k).
- Иначе, искомый элемент находится в правом подмассиве. Рекурсивно применяем алгоритм QuickSelect([подмассив], k-n), где n- длина левого подмассива.
Алгоритм "QuickSelect" имеет среднюю сложность O(n), где n - размер массива, и является более эффективным, чем полная сортировка массива для нахождения k-порядковой статистики.
Однако, в худшем случае, когда опорный элемент выбирается неудачно, алгоритм "QuickSelect" может иметь сложность O(n^2). Для уменьшения вероятности худшего случая, можно использовать медиану из трех элементов в качестве опорного, либо использовать более сложные стратегии выбора опорного элемента.