在以前的jdk7版本中,sort()的实现原理是:基本类型使用优化的快速排序,其他类型使用优化的合并排序。在jdk7之后,排序策略被修改:如果配置了jvm启动参数-djava.util.arrays文件.uselegacymergesort=true则将执行上述排序策略(优化合并排序),否则将执行timsort。
快速排序原则:选择一个键值作为基准值。小于基准值的顺序在左边(一般无序),大于基准值的顺序在右边(一般无序)。通常,选择序列的第一个元素。
一个循环:从后向前比较,与参考值和最后一个值进行比较,如果交换位置小于参考值,则继续比较下一个,直到找到小于参考值的第一个值。找到此值后,将其从前到后进行比较。如果存在大于参考值的值,则交换位置。如果没有,则继续比较下一个值,直到找到比参考值大的第一个值。直到从前面到后面的比较索引>;从后面到前面的比较索引结束第一个循环。此时,左右两侧依次为参考值。
然后比较左右顺序并重复上述循环。