一、简单描述五大排序(以从小到大排序为例)
1.冒泡排序
从前往后遍历n遍数组。第一遍可以将最大值被换到最后一个位置。第二遍可以将第二大的数换到倒数第二个。依次类推将数组遍历n次。
2.快速排序
找一个参考值,可以是数组的最左边,可以是最右边,可以是中间,也可以是用randrom函数随机产生的一个位置。比这个位置上的数小的全放在这个位置的左边,大的全放在右边。
3.插入排序
可以类比于打扑克的时候整理牌。手里的牌是整理好的,拿起一张没有整理的牌,从左往右看,找到第一个比它大的,放在这张大牌前面。
换到数组上面就是数组左边是整理好的顺序,数组右边是还没有整理好的。从右边第一个数开始依次按照整牌的原理插入到左边(找第一个比它大的,放在大数前面)。
4.选择排序
从数组中选出最小的放入序列。
选出第二小的放在序列第二位。
依次类推。
5.归并排序
一分为二,不停地往下分,直到都变成只包含一个数的数组。然后开始合并,使用双指针法。两个指针分别指向两个要合并的 数组的第一位。小的被放入序列,指针往后移一位。(可以在b站找一下视频更易于理解)。
二、是否稳定
是否稳定是排序算法最经常被问到的问题。
这五个里面插冒归是稳定的(谐音插帽龟)其余不稳定
三、算法复杂度
选冒插 o(n^2)
快归o(nlogn)