Можно найти k наименьшее из n элементов в O(n)
времени (под которым я имею в виду истинное O(n)
время, а не O(n + some function of k)
). Обратитесь к статье Википедии «Алгоритм выбора» , особенно к подразделам «неупорядоченная частичная сортировка» и «медианный отбор в качестве сводной стратегии», а также к статье «Медиана медианов» для основной части, которая делает это O(n)
.