解析JDK8中Arrays.sort底层原理及其排序算法的选择
暂时网上看过很多JDK8中Arrays.sort的底层原理,有些说是插入排序,有些说是归并排序,也有说大于域值用计数排序法,否则就使用插入排序。。。其实不全对。让我们对着源码分析个究竟: // Use Quicksort on small arrays if (right - left < QUICKSORT_THRESHOLD) {//QUICKSORT_THRESHOLD = 286 sort(a, left, right, true); return; } 数组一进来,会碰到第一个阀值QUICKSORT_THRESHOLD(286),注解上说,小过这个阀值的进入Quicksort (快速排序),其实并不全是,点进去sort(a, left, right, true);方法能看见: // Use insertion sort on tiny arrays if (length < INSERTION_SORT_THRESHOLD) {//INSERTION_SORT_THRESHOLD=47 if (leftmost) …… 我们看到第二个阀值INSERTION_SORT_THRESHOLD(47),如果元素少于47这个阀值,就用插入排序,往下看确实如此: /* * Traditional (without sentinel) insertion sort, *