
源码分析
小兀哥
变是永远不变的
展开
-
【jdk8源码】legacyMergeSort算法=插入排序+分治思想+归并优化,其实就这么简单
jdk1.7之前的排序用的就是归并排序,legacyMergeSort此方法就是1.7为了兼容之前版本的归并排序。一、简介 归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间.原创 2020-07-29 10:03:11 · 2941 阅读 · 0 评论 -
【jdk8源码】TimSort算法——从头看到脚
TimSort算法主要进行了以下优化1、利用自然升序序列2、优化的二分插入排序,先利用二分查找找到位置,再进行移位,插入数据排序3、拆分为大小查不多的run分割槽。因为将一个长序列和一个短序列进行归并排序从效率和代价的角度来看是不划算的,而两个长度均衡的序列进行归并排序时才是比较合理的也比较高效的。4、优化的归并排序,4.1 找到在左边run1中找到右边run2中的最小元素的位置x1,这样x1之前的元素就不用处理了;4.2 找到在右边run2中找到左边run1中的最大元素的位置x2,这样x2之后原创 2020-07-28 10:35:22 · 1189 阅读 · 0 评论