【问题标题】:Merging 2 unsorted linked lists to one sorted linked list将 2 个未排序的链表合并为一个已排序的链表
【发布时间】:2014-09-18 13:34:31
【问题描述】:

我正在尝试解决一个问题,以有效地将 2 个未排序的链接列表合并到一个排序的链接列表中。我有一些想法。

  1. 只需合并 2 个链表,然后进行排序(合并排序或快速排序)
  2. 单独排序并合并两者遵循此概念。

How to merge two sorted arrays into a sorted array?

这些是我能想到的所有算法。有没有其他人有更好更有效的方法来解决这个问题?

【问题讨论】:

    标签: sorting merge linked-list


    【解决方案1】:

    另一种方法是使用 BST。将列表 1 元素添加到 BST,然后将列表 2 元素添加到 BST。然后使用BST的中序遍历,将元素放入待排序的列表3中。

    O(nlogn)

    【讨论】:

    • 这将提供与在两个列表上进行合并排序然后合并它们类似的性能,不是吗?
    • 当然。我提到它是 O(nlogn)。这是有效的空间明智。此外,没有涉及元素的重新排列,因为合并排序会导致更多的计算。
    【解决方案2】:

    首先将两个列表合并形成一个单链表,然后对这个单链表进行排序。

    【讨论】:

      【解决方案3】:

      您应该将两个列表连接成一个列表并对该列表进行排序。

      这比首先对它们进行排序更直接,代码更少,并且与第二个选项花费的时间相同。

      【讨论】:

      • 会是 O ( (n + m) (log(n + m)) ) 吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 2014-04-25
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多