Java排序算法(十二):总结
前面讲了10种基本的排序算法,现在来作下总结,基于下面几个方面来比较各个排序算法的优劣:
时间复杂度,空间复杂度,稳定性,适用场景
排序算法时间复杂度空间复杂度稳定性适用场景直接选择排序O(n^2)O(1)不稳定时间效率不高,但是空间效率很高,算法实现比较简单堆排序O(nlogn),底数为2O(1)不稳定时间效率很高,但是不稳定冒泡排序O(n^2)O(1)稳定算法实现比较简单,稳定,且对于已基本排序的数据排序,时间复杂度为O(n)快速排序最好O(nlogn),底数为2 最坏O(n^2)平均O(nlogn),底数为2O(logn),底数为2不稳定时间效率很高,但是不稳定直接插入排序O(n^2)O(1)稳定折半插入排序O(n^2)O(1)稳定时间效率比直接插入排序要好希尔排序O(n(logn)^2),底数为2O(1)不稳定归并排序O(nlogn),底数为2O(n)稳定空间复杂度较高桶式排序O(k+n)O(k+n)稳定待排序数据的范围在0~k之间,只能为整形序列基数排序稳定依赖子关键字排序算法,子关键字排序算法必须是稳定的关于稳定性的更深入分析,可以参考:
http://blog.sina.com.cn/s/blog_5f91efbe0100ndjb.html
原来和文字沾上边的孩子从来都是不快乐的,