稳定的和不稳定的排序算法
首先看结论:不稳定的排序算法:快、希、选、堆。(找到工作就可以选一对美女来玩了)
不稳定:相同元素的相当对顺序被改变
快速排序:快速排序的比较和交换是跳跃进行的,所以不稳定 O(nlogn)
希尔排序:希尔排序是按照不同的步长对元素插入排序,第一次插入排序时是有序的,但在不同的插入排序过程中,相同元素的顺序可能被打乱 O(nlogn)
选择排序:举个例子,序列5 8 5 2 9,我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。
在一趟选择,如果当前元素比一个元素小,而该小的元素又出现在一个和当前元素相等的元素后面,那么交换后稳定性就被破坏了。(n*2)
堆排序: 不稳定
稳定:
冒牌排序:依次的比较和交换,不会改变两个相等元素的位置 O(n*2)
插入排序:从未排序序列中选择最小的一个放在已排序数组中,不会改变相对位置O(n*2)
归并排序:分治法,O(nlogn)
桶排序: O(n*1.3)