一:
希尔排序(Shell‘s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。
二:使用代码实现
import java.util.Arrays; public class 希尔排序 { public static void main(String[] args) { int arr[]={8,6,9,4,3,7,1,2,5,10,0}; num2(arr); } //交换式 static void num(int []arr){ int temp=0; int con=0; for(int gap=arr.length/2;gap>0;gap/=2){ for(int i=gap;i<arr.length;i++){ for (int j = i-gap; j >=0;j-=5 ) { if(arr[j]>arr[j+gap]){ temp=arr[j]; arr[j]=arr[j+gap]; arr[j+gap]=temp; } } } } System.out.println("第"+(++con)+"次 :"+Arrays.toString(arr)); } //移动式 static void num2(int[]arr) { int con=0; for (int gap = arr.length / 2; gap > 0; gap /= 2) { for (int i = gap; i < arr.length; i++) { int j=i; int temp=arr[j]; while (j-gap>=0&&temp<arr[j-gap]){ arr[j]=arr[j-gap]; j-=gap; } arr[j]=temp; } System.out.println("第"+(++con)+"次 :"+Arrays.toString(arr)); } } }
原文:https://www.cnblogs.com/xioayuan/p/14398290.html