*冒泡排序:交换相邻两个数
最好:O(n); 最差:O(n2)
可以改进:若上一步比较发现已经有序,则不需要再排,可以设置一个标志位用于记录是否有序 。
*简单选择排序:每趟选择最小的数,和它该在的位置交换;交换次数比较少,性能略优于冒泡排序
O(n2)
*直接插入排序:理牌;较前两个更好一些
O(n2)
*希尔排序:https://www.cnblogs.com/chengxiao/p/6104371.html
时间复杂度小于O(n2),不是一种稳定的排序方式
*堆排序:1.建成一个堆;2.输出堆顶元素;3.构建新的堆
O(nlogn)
*归并排序:https://www.cnblogs.com/chengxiao/p/6194356.html
递归法: 时间复杂度:O(nlogn);空间复杂度:O(n+logn)
非递归的迭代方法:空间复杂度:O(n)
稳定;占内存;效率高。一般使用非递归的迭代方法
*快速排序
选择一个数,将比他小的数放到他左侧,比他大的数放到他右侧;对他左侧和右侧的数分别进行同样的操作
O(n2)