七大排序算法稳定性总览 :
排序 | 时间复杂度 |
---|---|
直接插入排序 | O(n^2) 稳定 |
希尔排序 | O(n1.3-n1.5) 不稳定 |
选择排序 | O(n^2) 不稳定 |
堆排序 | O(nlogn) 不稳定 |
冒泡排序 | O(n^2) 稳定 |
快速排序 | O(nlogn) 不稳定 |
归并排序 | O(nlogn) 稳定 |
关于排序算法的稳定与否,以整形数组为例,其实就是排序过程中,数组中两个相等的数据,经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法是具备稳定性的排序算法。
如图 ,数组中两个相等的数据在排序完成,成为一个有序的数组后,相等元素的相对位置没有变化。
每个排序算法的稳定性不同,是因为每一种排序的排序方法有差异,因此基于不同的思想所写出的代码时间复杂度也不一样。