我曾尝试使用 2或3个元素等于的数组,当然它不稳定但是如果我们的数组所有元素都等于此{{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分区实现似乎并没有破坏顺序