一:
希爾排序(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.uj5u.com/qita/258880.html
標籤:其他
