排序算法的稳定性
排序算法的稳定性是指两个相等的元素在排序前后其相对位置是不变的。而与时间复杂度没有直接关系,所以要注意区分相关的概念。
稳定:冒(冒泡排序)直(直接插入排序)归(归并排序)基(基数排序,不常用)
不稳定:选(选择排序)希(希尔排序)快(快速排序)堆(堆排序)
常见的6种排序算法的平均时间复杂度分析
冒n2直n2
归nlog2n
选n2快nlog2n
堆nlog2n
排序时间复杂度与初始状态是否有关(循环次数)
归并,选择排序,堆排序,由于平均最差相同,所以初始顺序不影响其排序复杂度选择
排序比较次数与初始状态是否有关
算法性能与初始状态是否有关
直接插入,归并,快排,堆有关
冒泡,选择无关
初始序列基本有序的情况
冒泡n最好 直接插入n最好
快排n2最差
空间复杂度
只有快排的空间复杂度,和堆排序的空间复杂度比较多堆排序需要额外的辅助空间n
快排的空间复杂度,如果就地快排1
使用递归平均是logn,最差情况,退化成冒泡是n
附:
上图有错:快排的空间复杂度,如果就地快排1
使用递归平均是logn,最差情况,退化成冒泡是n