Arrays.sort底层原理

在数组的数量小于47的情况下使用插入排序,在大于或等于47或少于286会进入快速排序(双轴快排)
大于286采用归并排序

在判断少于286之前还有一个操作

 

 

这里主要作用是看他数组具不具备结构:实际逻辑是分组排序,每降序为一个组,像1,9,8,7,6,8。9到6是降序,为一个组,然后把降序的一组排成升序:1,6,7,8,9,8。然后最后的8后面继续往后面找。

每遇到这样一个降序组,++count,当count大于MAX_RUN_COUNT(67),被判断为这个数组不具备结构(也就是这数据时而升时而降),然后送给之前的sort(里面的快速排序)的方法(The array is not highly structured,use Quicksort instead of merge sort.)

如果count少于MAX_RUN_COUNT(67)的,说明这个数组还有点结构,就继续往下走下面的归并排序

 

posted @ 2020-07-06 10:13  Zyh_S  阅读(2169)  评论(0编辑  收藏  举报