PASCAL 为什么说快排不稳定

来源:百度知道 编辑:UC知道 时间:2024/05/31 14:14:13
RT
如果仅仅只是排序。。
不考虑其他因素。。
快排是否不稳定?

如果说快排不是稳定排序算法的话 那么正如上面所说 快排的确是不稳定的
而如果说快排的速度 可能很多人也说是不稳定的 实际上它的速度是稳定的 退化到O(n^2)是因为程序写的不好
根据算法导论(CLRS)里面所说 如果每次按照某个比例选取数作为标准(比如说 像一般所用的选取中间位置的数 就是按照1/2的比例选取) 那么快排的时间复杂度就一定是O(nlogn)了

简而言之,快排不是稳定排序,但是它的时间效率是稳定的

排序算法的稳定不稳定是这样定义的:所谓稳定的排序算法就是对于任何的排序数据,排序之后相同大小的数值的的顺序没有发生变化,比如: 2 4 4 1 6 3 排序之后第二4的位置依然在一个4之后就是他们两个没有发生位置变化;称之为稳定;否则称之为不稳定的排序。快排在中间是要直接交换前端和后端的值,所以为不稳定排序。

是这个算法不稳定。
不稳定:就是大小相同的两个数,经过排序后,最终位置与初始位置交换了。

快速排序:
27 23 27 3
以第一个27作为pivot中心点,则27与后面那个3交换,形成
3 23 27 27,排序经过一次结束,但最后那个27在排序之初先于初始位置3那个27,所以不稳定。

嗯 大家都说对了
仅仅是在算法本身进行的过程中不稳定而已。

两个相同的数,交换后,原先在前的会在后边,即不稳定。

楼下的说的很对