Алгоритм нахождения k наименьших чисел в массиве из n элементов - PullRequest
20 голосов
/ 21 марта 2011

Я пытаюсь написать алгоритм, который может печатать k наименьших чисел в массиве размера n за O (n) времени, но я не могу уменьшить сложность времени до n.Как я могу это сделать?

Ответы [ 12 ]

0 голосов
/ 25 марта 2011

Как насчет использования кучи для хранения значений. Эта стоимость равна n, когда вы просматриваете каждое значение в массиве.

Затем пройдите кучи, чтобы получить наименьшее значение k.

Время выполнения O (n) + O (k) = O (n)

Конечно, пространство памяти теперь O (n + n)

0 голосов
/ 21 марта 2011

Просто отсортируйте массив с помощью Merge Sort, а затем напечатайте первое число k, в худшем случае потребуется n * log2 (n).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...