时间复杂度&空间复杂度&稳定性
目录
1. 各种算法的比较
2. 算法不稳定定义
定义:在排序之前,有两个数相等,但是在排序结束之后,它们两个有可能改变顺序.
说明:在一个待排序队列中,A和B相等,且A排在B的前面,而排序之后,A排在了B的后面.这个时候,我们说这种算法是不稳定的.
3. 不稳定的几种算法
1)快排为什么不稳定
3 2 2 4 经过第一次快排后结果:2 2 3 4 (第3号位置的2第一次排序后跑到第1号位置了)
2)堆排序为什么不稳定
如果堆顶3先输出,则,第三层的27(最后一个27)跑到堆顶,然后堆稳定,继续输出堆顶,是刚才那个27
这样说明后面的27先于第二个位置的27输出,不稳定
3)选择排序为什么不稳定
5 8 5 2 9 第一次假定1号位置的5最小,但是实际最小的是4号位置的2
第一次排序后为:2 8 5 5 9 以前1号位置的5跑到3号位置5的后面了
注:
时间复杂度
有几层for循环,时间复杂度就是n的几次方。
每次循环减半就是nlogn
只要见到循环减半都有一个logn
空间复杂度
申请一个新的内存空间
n=1 # 空间复杂度 o(1)
list=[1,2,3,4] # 空间复杂度 o(n)