分析10种算法的稳定性
-
稳定:如果a原本在b前面,而a=b,排序之后
-
不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面。
在学习的时候,第一次接触稳定性,我们会认为算法的稳定性是算法的时间复杂度去决定的。
比如插入排序思路:主要记住是插入,那么它的意思是每一个元素向前面任何一个元素一一对比,如果有小于那个元素的就交换(插入)。所以当相同元素进行比较时,不会进行交换——稳定
**希尔排序:**是以增量为基准,然后分组进行排序的,如果两个相同元素不在同一组,就有可能原本a=b,且a在后面,b在前面,排序后a在前面,b在后面——不稳定
选择排序: 从前往后找,以第一个开始i=0,如果找到后面有大于下标i=0的值,则将大于的数的下标保存,遍历完后,找到最小值与之交换——不稳定
**快速排序:**找到一个基准,然后分别从左和右边进行比较,将小于基准数的全放左边,大于基准数的全放右边,遍历完一次过后,则将基准数与i==j的下标进行交换,然后递归继续。