根据排序时选择的策略可以分为:
插入排序
直接插入排序、其他插入排序(折半插入排序、2-路插入排序、表插入排序)
交换排序
冒泡排序、快速排序
选择排序
简单选择排序、堆排序
归并排序
基数排序
总结:
1、 时间复杂度为O(n2)的排序都是稳定的,且其空间复杂度为O(1);
2、 先进的排序有:希尔排序、快速排序、堆排序、归并排序
l 希尔排序:关键是找到合适的增量序列,何时最有在数学上尚未解决。空间复杂度O (1)。
l 快速排序:最大的优势就是平均时间复杂度是最低的。空间复杂度O(logn)-用于递归调用栈。
l 堆排序:最大的优势是在最坏情况下的时间复杂度也是O(nlogn)。空间复杂度O(1)。
l 归并排序:最大的优势是其排序时稳定的排序。时间复杂度O(n)-用于辅助两个归并段融合;
关于各个算法的Java实现,在我的博客中有相应的文章,欢迎大家指正~~