参考
参考博客
参考书籍
本文中介绍的算法
选择排序,插入排序,冒泡排序,快速排序,归并排序,堆排序,计数排序,基数排序,桶排序,希尔排序
算法分类:
按最坏时间复杂度分类:
O(n^2):选择排序,插入排序,冒泡排序
O(nlgn):快速排序,归并排序,堆排序
O(n):计数排序,基数排序(桶排序) //这里比较复杂,严格来说这几个排序算法的复杂度都不能用O(n)来严格表示,后面有相应分析
较难分析:希尔排序
按需要的额外空间复杂度分类:
In-place(额外占用常数的内存):选择排序,插入排序,冒泡排序,堆排序,快速排序,希尔排序
Out-place(额外占用O(n)内存):归并排序,计数排序,基数排序,桶排序
按是否稳定排序分类:
stable(稳定排序):插入排序、冒泡排序、归并排序、计数排序、基数排序、桶排序。