1.最快的排序算法:快速排序(不稳定)
每次找基准(一般选第一个),将数组分为大于基准和小于基准两块,然后对每一块递归,直到只剩一个元素,然后返回 左+中+右
2.归并排序
3.冒泡排序
最简单的 o(n2)复杂度,稳定的,、
两两比较,不对就交换
4.堆排序 (不稳定)
讲的比较好
https://www.bilibili.com/video/av18980178?from=search&seid=3518072115040122033
先看视频,再看代码:
https://www.jb51.net/article/139922.htm
5、选择排序 (不稳定)
声明一个变量min_index等于列表的第一个坐标值0
从第一个位置0坐标开始,和它后边所有的元素一一比对,如果发生了后边的值min_index坐标的对应的值更小,则min_index值改为后边那个数的坐标,然后用min_index坐标对应的值再跟后边的数比较,完成全部比对以后,将列表的第一个数和min_index坐标对应的数做一个交换
第一次用6和5比较,5小,min_index改为1,用5和后边的4比,4小,min_index改为2,用4跟3比,3小,min_index改为3,用3跟2比较,2小,min_index改为4,用2和1比较,1小,min_index改为5,比完了,把坐标5对应的值和第一个值交换
min_index=5
a=[1, 5, 4, 3, 2, 6],最小的1放到最前边,
第二步:从坐标1开始,把刚才的逻辑再来一遍:
a=[1, 2, 4, 3, 5, 6]
第三步:从坐标2开始,把刚才的逻辑再来一遍
a=[1, 2, 3, 4, 5, 6]
第四步:从坐标3开始,把刚才的逻辑再来一遍
a=[1, 2, 3, 4, 5, 6]
第五步:从坐标4开始,把刚才的逻辑再来一遍
a=[1, 2, 3, 4, 5, 6]
6.插入排序
插入排序原理很简单,讲一组数据分成两组,我分别将其称为有序组与待插入组。
每次从待插入组中取出一个元素,与有序组的元素进行比较,并找到合适的位置,
将该元素插到有序组当中。就这样,每次插入一个元素,有序组增加,待插入组减少。
直到待插入组元素个数为0。当然,插入过程中涉及到了元素的移动。