Назовите k-отсортированные списки 1, ..., k.
Пусть A
будет именем объединенного отсортированного массива.
Для каждого списка i, pop v
от i
и нажмите (i, v)
в минимальную кучу.Теперь куча будет содержать пары значений и идентификатора списка для наименьших записей в каждом из списков.
Пока куча не пуста, вытолкните (i, v)
из кучи и добавьте v
к A
,Вытащите следующий элемент из списка i
(если он не пустой) и поместите его в кучу.
В куче есть n
добавлений и удалений.Куча содержит не более k
элементов на каждом временном шаге.Следовательно, время выполнения составляет O(n log k)
.