常见排序算法实现,升序
稳定性:通俗地讲就是能保证排序前两个相等的数据其在序列中的先后位置顺序与排序后它们两个先后位置顺序相同。 再简单具体一点,如果$A_i == A_j$
,$A_i$
原来在$A_j$
位置前,排序后$A_i$
仍然是在$A_j$
位置前
-
冒泡排序
平均时间复杂度:
$O(n^2)$
空间复杂度:O(1)
稳定性:稳定 -
选择排序
平均时间复杂度:
$O(n^2)$
空间复杂度:O(1)
稳定性:不稳定 -
插入排序
平均时间复杂度:
$O(n^2)$
空间复杂度:O(1)
稳定性:稳定 -
希尔排序
平均时间复杂度:
$O(nlog_2n)$
空间复杂度:O(1)
稳定性:不稳定 -
归并排序
平均时间复杂度:
$O(nlog_2n)$
空间复杂度:O(n)
稳定性:稳定 -
快速排序
平均时间复杂度:
$O(nlog_2n)$
空间复杂度:$O(nlog_2n)$
稳定性:不稳定 -
堆排序
升序用大顶堆实现
平均时间复杂度:$O(nlog_2n)$
空间复杂度:O(1)
稳定性:不稳定