我是一个从汽车行业转行IT的项目经理,我是Edward,如想了解更多,请关注我的公众号【转行项目经理的逆袭之路】。今天继续跟大家聊Java自带的两种排序方法是如何实现的。

Arrays.sort

打开以后,里面的方法叫做DualPivotQuickSort:
浅析Arrays.sort以及Collection.sort

不过绝不仅仅如名字所述,真正的排序过程经过了很多次对数组的判定,如下面的流程图:
浅析Arrays.sort以及Collection.sort

这些都是关键的常数阈值。
浅析Arrays.sort以及Collection.sort
根据阈值的判断,从繁到简,一共用到Tim-sort,DualPivotQuickSort,SinglePivotQuickSort ,Merge sort,以及Pair-insertion-sort。
光是双轴快排就分了下面三种分组情况:
浅析Arrays.sort以及Collection.sort
浅析Arrays.sort以及Collection.sort
浅析Arrays.sort以及Collection.sort
嗯,就连相同数字特别多的情况都单独考虑到了,被称为Dutch National Flag。

Collections.Sort

浅析Arrays.sort以及Collection.sort
看到这段源码,从JDK1.8起,就是套用Arrays.sort的排序方法了。

嗯,到这里,就是今天要分享的内容。

相关文章:

  • 2022-12-23
  • 2022-01-24
  • 2021-05-29
  • 2021-04-07
  • 2021-10-01
  • 2021-10-05
  • 2021-12-04
猜你喜欢
  • 2021-06-19
  • 2022-12-23
  • 2021-06-02
  • 2021-12-09
  • 2022-12-23
  • 2021-06-27
  • 2022-12-23
相关资源
相似解决方案