Java排序算法总结

Java排序算法总结

从时间复杂度来说:

  • a. 平方阶O(n²)排序:各类简单排序:直接插入、直接选择和冒泡排序
  • b. 线性对数阶O(nlog₂n)排序:快速排序、堆排序和归并排序
  • c. O(n1+§))排序,§是介于0和1之间的常数:希尔排序
  • d. 线性阶O(n)排序:基数排序,此外还有桶、箱排序

论是否有序的影响:

  • a. 当原表有序或基本有序时,直接插入排序和冒泡排序将大大减少比较次数和移动记录的次数,时间复杂度可降至O(n);
  • b. 而快速排序则相反,当原表基本有序时,将蜕化为冒泡排序,时间复杂度提高为O(n2);
  • c. 原表是否有序,对简单选择排序、堆排序、归并排序和基数排序的时间复杂度影响不大。

直接插入排序
希尔排序
简单选择排序
堆排序
冒泡排序
快速排序
归并排序
基数排序

相关文章: