【发布时间】:2011-03-21 06:47:37
【问题描述】:
给定 k 个长度为 n 的排序数组,构造一个合并排序数组。关注运行时间和空间复杂度。
来源:亚马逊面试问题。
有什么想法吗?谢谢
【问题讨论】:
-
@Noel M:不是重复的,这个是关于合并(可能)两个以上的排序列表。
-
是的,你是对的,对不起。我还在半睡中
标签: algorithm
给定 k 个长度为 n 的排序数组,构造一个合并排序数组。关注运行时间和空间复杂度。
来源:亚马逊面试问题。
有什么想法吗?谢谢
【问题讨论】:
标签: algorithm
从每个数组的第一个元素创建一个堆。从堆中弹出头元素,将其插入结果数组,然后从堆头所在的数组中取出下一个元素,并将其插入堆中。重复直到你用完所有的数组。
【讨论】:
k 元素的堆:它包含每个排序数组中的第一个(最小)元素。每个数组中只有一个元素。当您从堆中删除最小元素(并将其发送到输出)时,您将同一数组中的下一个元素添加到堆并重建堆。这样堆的大小总是只有k。
k元素中选择最小值,从两个数组扩展到k数组.在这种方法中,排序部分完成的事实被该算法大量使用。