【问题标题】:MergeSort Implementation StabilityMergeSort 实现稳定性
【发布时间】:2017-04-21 21:15:08
【问题描述】:

mergesort 的实现会影响它的稳定性吗?

例如,如果我们使用数组来实现归并排序,那是不是比归并排序的链表实现更不稳定?

【问题讨论】:

  • 排序算法是稳定的还是不稳定的。没有所谓的“不稳定”。

标签: arrays algorithm linked-list quicksort mergesort


【解决方案1】:

数组或链表的合并排序的自顶向下(递归)和自底向上(迭代)实现的大多数实现都将是稳定的。关键因素在合并函数中,只要合并函数将相等的“左”元素移动到“右”元素之前,它将是稳定的。比较可以是“左”元素

另一个可能的问题是混合合并排序,它对小元素组使用不稳定的排序方法。

一般来说,交换相邻元素的排序(如冒泡排序)通常是稳定的,而交换非相邻元素的排序(如快速排序)通常不稳定。

【讨论】:

    【解决方案2】:

    合并排序应该对它们都稳定。您使用列表还是数组更多地取决于您使用它的目的。

    【讨论】:

      【解决方案3】:

      如果排序方法保持数组中具有相同键的元素的相对顺序,则它是稳定的。

      自上而下和自下而上的实施都是稳定的方法。它独立于数组或链表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-11
        • 2016-10-03
        • 1970-01-01
        • 2020-07-29
        • 1970-01-01
        • 2015-10-11
        相关资源
        最近更新 更多