Java排序算法总结
从时间复杂度来说:
- a. 平方阶O(n²)排序:各类简单排序:直接插入、直接选择和冒泡排序
- b. 线性对数阶O(nlog₂n)排序:快速排序、堆排序和归并排序
- c. O(n1+§))排序,§是介于0和1之间的常数:希尔排序
- d. 线性阶O(n)排序:基数排序,此外还有桶、箱排序
论是否有序的影响:
- a. 当原表有序或基本有序时,直接插入排序和冒泡排序将大大减少比较次数和移动记录的次数,时间复杂度可降至O(n);
- b. 而快速排序则相反,当原表基本有序时,将蜕化为冒泡排序,时间复杂度提高为O(n2);
- c. 原表是否有序,对简单选择排序、堆排序、归并排序和基数排序的时间复杂度影响不大。