我收到了一项作业,要求我有效地将总共有 N 个元素的 K 个排序列表合并到一个排序列表中。我偶然发现的方法是使用最小堆对 K 列表中的元素进行排序或使用分而治之的方法(成对合并)。该线程中的评论表明,分治法的时间复杂度为 O(NK),而最小堆法的时间复杂度为 O(N log K),并且两者具有相同的空间复杂度。我还访问了许多其他线程,但我无法获得清晰的图片。
疑问和问题:
- 许多其他站点告诉分治法和最小堆方法都有 O(N log K) 的时间复杂度。这是真的还是假的?
- 两种方法的空间复杂度是否相同?如果不是,它们有何不同?
- 为什么对于不同长度的列表,最小堆方法比分治法更好?
- 我还发现您可以使用优先队列来解决问题。与这些相比如何?