十大排序算法
稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;
不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;
内排序:所有排序操作都在内存中完成;
外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;
时间复杂度: 一个算法执行所耗费的时间。
空间复杂度:运行完一个程序所需内存的大小。
1、冒泡排序
时间复杂度最好:n
时间复杂度最坏:n^2
时间复杂度平均:n^2
空间复杂度:1
稳定性:稳定
原理:相邻元素比较排序,最值冒出
适用:小规模,有序
2、选择
时间复杂度最好:n^2
时间复杂度最坏:n^2
时间复杂度平均:n^2
空间复杂度:1
稳定性:不稳定
原理:无序区选择最小元素放在有序区末尾
适用:小规模,有序
3、插入排序
时间复杂度最好:n
时间复杂度最坏:n^2
时间复杂度平均:n^2
空间复杂度:1
稳定性:稳定
原理:无序区第一个元素插入到有序区正确位置
适用:小规模,有序
4、希尔排序
时间复杂度最好:nlogn
时间复杂度最坏:nlogn
时间复杂度平均:nlogn
空间复杂度:1
稳定性:不稳定
原理:不断缩小增量的插入排序
适用:
5、归并排序
时间复杂度最好:nlogn
时间复杂度最坏:nlogn
时间复杂度平均:nlogn
空间复杂度:n
稳定性:稳定
原理:二分,比较排序
适用:大规模
6、快速排序
时间复杂度最好:nlogn
时间复杂度最坏:n^2
时间复杂度平均:nlogn
空间复杂度:1
稳定性:不稳定
原理:选基准,小于基准放左边,大于基准放右边,递归
适用:大规模
7、堆排序
时间复杂度最好:
时间复杂度最坏:
时间复杂度平均:
空间复杂度:
稳定性:
原理:
适用: