为什么java默认的排序算法采用归并排序Timsort
java排序的过程描述
1、N<47 插入排序 2、47各种排序的时间复杂度与空间复杂度
java排序为什么采用归并排序
1、首先当排序数量大于286且连续性好(有序情况好)的时候才会采用Timsort,连续性不好还会使用双轴快排
2、如果连续性好的情况下用别管怎么选择分区点,快排时间复杂度都可能退化O(n2),所以这种情况要避免使用快排
3、Timsort就是针对这种连续性好的情况针对归并排序的优化,优化的方向如下:
1、Timsort是稳定的算法,当前排序的数组中已经有排序好的数,它的时间复杂度会小于O(nlogn)
2、最坏情况下Timsort算法需要的临时空间是n/2,在最好情况下,它只需要一个很小的临时存储空间
参考文档:https://www.jianshu.com/p/892ebd063ad9