一、 稳定性
稳定性是指待排序的序列中有两个或者两个以上相同的项,排序前和排序后,看这些相同的项的相对位置有没有没发生变化,如果没有发生变化,就是稳定的;如果发生变化,就是不稳定的。
二、 排序分类以及复杂度
1. 插入类排序
1.1、直接插入排序
最坏时间复杂度:O(n^2)
最好时间复杂度:O(n)
平均时间复杂度:O(n^2)
空间复杂度:O(1)
1.2、折半插入排序
最坏时间复杂度:O(n^2)
最好时间复杂度:O(n)
平均时间复杂度:O(n^2)
空间复杂度:O(1)
1.3、希尔排序
平均时间复杂度:O(nlogn)
空间复杂度:O(1)
2. 交换类排序
2.1、冒泡排序
最坏时间复杂度:O(n^2)
最好时间复杂度:O(n)
平均时间复杂度:O(n^2)
空间复杂度:O(1)
2.2、快速排序
最坏时间复杂度:O(n^2)
最好时间复杂度:O(nlogn)
平均时间复杂度:O(nlogn)
空间复杂度:O(logn)
3. 选择类排序
3.1、简单选择排序
最坏时间复杂度:O(n^2)
最好时间复杂度:O(n^2)
平均时间复杂度:O(n^2)
空间复杂度:O(1)
3.2、堆排序
最坏时间复杂度:O(nlogn)
最好时间复杂度:0(nlogn)
平均时间复杂度:O(nlogn)
空间复杂度:O(1)
4. 归并类排序
4.1、二路归并排序
最坏时间复杂度:O(nlogn)
最好时间复杂度:O(nlogn)
平均时间复杂度:O(nlogn)
空间复杂度:O(n)
5. 基数类排序
最坏时间复杂度:O(d(n+rd))
最好时间复杂度:
平均时间复杂度:O(d(n+rd))
空间复杂度:O(rd)