西安鸥鹏谈:java语言开发中的内部排序机制

​​IT行业一直都是高薪的行业,高薪行业也是大家都向往的行业,高薪就意味着有高的挑战。很多的学员在学习java的时候都是不知道java语言中的内部排序机制是怎么排序的。然后在学习的过程中就会有很多的问题出现,下面鸥鹏讲师就给大家讲解下java语言中的内部排序机制是怎么排序的。

西安鸥鹏谈:java语言开发中的内部排序机制

java培训

数组的操作可以使用java提供的工具类Arrays,其中Arrays.sort()方法用于数组的排序。


  基本数据类型数组的操作,使用经过优化的快速排序算法

  当数组的规模较小时,直接插入排序的比较次数并不会比快排或者归并多多少,其效率反而不如简单排序算法,所以在数组规模小于7时,使用直接插入排序,

  当数组规模较大时,合理的选择快排的枢轴元素,如在规模小于40时,在数组的首,中,尾三个位置上的数,取中间大小的数做枢轴;在数组规模大于40时,从数组中取位置均匀分布的9个数,然后每三个数一组取中间数,最后三个中间数再取中间数。确定枢轴后,与数组的第一个元素交换,之后的快排与普通快排一样。

  当数组中有大量重复元素时,选择重复元素作为枢轴,然后两个端各设置两个工作指针low、high,left、right用于始终指向要交换的元素位置,如5,2,5,6,4,3,5,1,5,7

  从high开始判断,low <= high,若high位置的元素 >= 基准元素high–,同时若high位置的元素 == 基准元素,high位置的元素与right位置的元素交换,同时right–,继续直到high位置的元素 < 基准元素。

  从low开始判断,low <= high,若low位置的元素 <= 基准元素low++,同时若low位置的元素 = 基准元素,low位置的元素与left位置的元素交换,同时left++,继续直到low位置的元素 > 基准元素。

  low、high位置的元素交换,同时low++、high–,然后再从high开始继续上面的过程,最后将重复的元素至于序列的两端,中间的序列分成了两部分,左面的为小于基准元素的,右面的为大于基准元素的,如5,5,2,1,4,3,7,6,5,5,此时low在7位置,high在3位置。

  将两端重复的元素都交换到中间后,对两端不等的元素使用快排,左侧外循环从下标0开始判断,若等于枢轴进入内循环,内循环从下标low - 1开始向前找不等于枢轴的,找到交换,直到外循环遇到不等于枢轴的退出;右侧外循环从下标n - 1开始判断,若等于枢轴进入内循环,内循环从下标high + 1开始向后找不等于枢轴的,找到交换,直到外循环遇到不等于枢轴的退出。

  引用数据类型数组的排序,使用经过优化的归并排序算法。

  当数组规模j较小时,使用直接插入排序。

  当属组规模较大时,使用归并排序,且当合并的两个有序序列中,低子序列的最高元素小于高子序列的最低元素时,无序执行合并算法,这个可以在merge算法里判断。

  学习java语言开发的话还是要先了解下java开发语言的内部排序机制的排序的。鸥鹏有专业的导师团队,引领行业的先进课程,全程专业导师指导,让每位学员可以更快的掌握想学的知识,想要了解更多关于java培训的课程欢迎对我们公司进行实地考察。​​​​

相关推荐