Java排序算法(十二):总结

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

原来和文字沾上边的孩子从来都是不快乐的,

Java排序算法(十二):总结

相关文章:

你感兴趣的文章:

标签云: