七大排序演算法之希爾排序

2021-08-19 14:27:20 字數 666 閱讀 5098

這個排序演算法,其實就是乙個插入排序的改進,可以作為知識的擴充套件來學習,由於平時用的不多,所以先記錄在這裡,以後要用不至於沒有頭緒。

希爾排序在陣列中採用跳躍式分組的策略,通過某個增量將陣列元素劃分為若干組,然後分組進行插入排序,隨後逐步縮小增量,繼續按組進行插入排序操作,直至增量為1

平均情況:介於n和n*n之間

最壞情況:n*n

最好情況:n

public class shellsort ;

system.out.println("排序前陣列為:");

for(int num:arr)

sort(arr);

system.out.println();

system.out.println("排序後的陣列為:");

for(int num:arr)

} public static void sort(int arr)

}} }

public static void sort1(int arr)

arr[j] = temp;}}

} }public static void swap(int arr, int a, int b)

}

如果還不能理解的話,可以參考下面這篇部落格,講的詳實正確,生動形象,重點是有圖哦,0.0

七大排序之希爾排序

希爾排序的實質就是分組插入排序,該方法又稱 縮小增量排序 因dl shell於1959年提出而得名。該方法的基本思想是 先將整個待排元素序列分割成若干個子串行 由相隔某個 增量 的元素 組成的 分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序 增量足夠小 時,再對全體元素...

七大排序之希爾排序

希爾排序可以說是對插入排序的優化,所以又可以稱希爾排序為分組插入排序 插入排序速度快是在資料量較小且基本有序倆個條件下有效,如果資料過長且基本無序,採用希爾排序將其分解成若干組,分別做插入排序。核心 1 void shellsort int arr,int length 23 不能改成arr i 因...

七大排序演算法

氣泡排序 void bubble int a,int n 選擇排序 void select sort int a,int n n為陣列a的元素個數 將第i 小的數,放在第i 個位置 如果剛好,就不用交換 if i min index 插入排序 typedef int elementtype void...