- 选择排序:摸到一叠牌,每次选择出最小的放在合适的位置(第一次放在第一张,第二次放在第二张),实现排序
- 最好最坏都是 O(n^2)
- 插入排序:摸牌的时候一张一张摸,每次找到合适的位置插入
- 时间复杂度:最好情况O(n),最差情况O(n2)
- 希尔排序:图源 bilibili视频希尔排序
时间复杂度平均:O(N^1.3) - 冒泡排序:从前往后遍历n次,如果有顺序不对的就交换,直到一次完全不交换;
- 时间复杂度:最坏情况:O(n^2) 最好情况:O(n)
- 归并排序:先排序后再合并,先给小范围排序再给大范围排序
- 时间复杂度:O(nlogn) (主定理计算得到)
- 快速排序:每次选择一个pivot,然后把比pivot小的元素挪到左边,把比pivot大的元素挪到右边,对子区间做同样处理
(快排和归并排序的思想都是分治法)- 时间复杂度:最坏O(n^2),最好O(nlogn) (取决于pivot的选择运气)
- 真正写代码的时候用sort函数就可以啦,性能也很好的
- 时间复杂度:最坏O(n^2),最好O(nlogn) (取决于pivot的选择运气)