为啥快速排序不稳定?按照这种方式是稳定的吧
c++吧
全部回复
仅看楼主
level 4
353948024 楼主
无法理解 比如一个数列
B(1) B(2) A(1) A(2) C D
第一次 选 B(1) 做主元,小于B的移动到左边,移动后就是 A(1) A(2) B(1) B(2) C D
左边第二次 针对 A(1) A(2) 主元是A(1),小于A(1)的没有
左边第三次 针对 A(2) 一个元素,返回,所以左边是 A(1) A(2)
右边第二次 针对 B(2) C D 主元是 B(2),无需移动
右边第三次 针对 C D 主元是 C,无序移动
右边第四次 针对 D 一个元素,返回,右边是 B(2) C D
合并 左边 ( A(1) A(2) ) + 主元 ( B(1) ) + 右边 ( B(2) C D ) = A(1) A(2) B(1) B(2) C D
相对顺序完全没有变化啊
只有随机快排才不稳定吧?
2016年09月01日 12点09分 1
level 5
2016年09月01日 12点09分 3
请看我的例子 那种交换的的确不稳定
2016年09月01日 13点09分
level 15
你这么做的确是稳定的。
2016年09月01日 13点09分 4
1