脚本宝典收集整理的这篇文章主要介绍了希尔排序,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。
package sort; import java.util.Arrays; public class ShellSort { public static void main(String[] args) { int[]arr={8,9,1,7,2,3,5,4,6,0}; shellSort(arr); } //希尔排序时,对有序序列在插入时采用交换法 public static void shellSort(int[] arr){ int temp=0; int count=0; for(int gap=arr.length/2;gap>0;gap/=2){ for(int i=gap;i<arr.length;i++){ //遍历各组中所有的元素(共gap组)步长为gap for (int j=i-gap;j>=0;j-=gap){ //遍历各组中所有元素大于加上步长后的那个元素,说明交换 if(arr[j]>arr[j+gap]){ temp=arr[j]; arr[j]=arr[j+gap]; arr[j+gap]=temp; } } } System.out.PRintln("希尔排序第"+(++count)+"轮"); System.out.println(Arrays.toString(arr)); } } }
以上是脚本宝典为你收集整理的希尔排序全部内容,希望文章能够帮你解决希尔排序所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。