堆排序和快速排序稳定性

时间:2018-03-31 10:43:19

标签: algorithm sorting stability

我曾尝试使用 2或3个元素等于的数组,当然它不稳定但是如果我们的数组所有元素都等于此{{1它会稳定还是不? 当然是使用堆排序或快速排序。

感谢。

1 个答案:

答案 0 :(得分:0)

给定数据集的稳定性取决于实现细节。例如,查看Wiki page

中的Lomuto分区
algorithm partition(A, lo, hi) is
    pivot := A[hi]
    i := lo - 1    
    for j := lo to hi - 1 do
        if A[j] < pivot then
            i := i + 1
            swap A[i] with A[j]
    swap A[i + 1] with A[hi]
    return i + 1

我们可以看到i从不递增,所以最后一次交换会交换范围的第一项和最后一项,从而破坏初始订单。

来自同一页面的Hoare分区实现似乎并没有破坏顺序