希爾排序的理解

2021-08-30 09:02:24 字數 465 閱讀 5225

希爾排序是插入排序的一種高效演算法,遞增量排序。我理解為步數排序

因為每次進行一次迴圈的時候,會給這次迴圈乙個跨度(也就是你一次能邁多少步)

void sort(int a,int length)

{ int step=0;

/*這個while迴圈,目的是找出對於當前陣列下,最大的步數,也就是最多能擴多少,

到最後跳出迴圈的時候,step就是此時最大的跨度(1,4,13……)

*/while(step=1){/*

當step=1的時候,說明此時的跨度為1,也就是說他現在已經是在一步一步的走了

,所以說是最後的比較,也是最後的一次迴圈了

希爾排序的理解

public static void shellsort int arr int j int temp for int gap arr.length 2 gap 0 gap 2 for int i gap i 這裡的 i gap就是插入排序的第二個數,j就是第乙個位置的數,i之所以是加一也要理解,當...

希爾排序理解

插入排序的 演算法複雜度為o n2 但如果序列為正序可提高到o n 而且直接插入排序演算法比較簡單,希爾排序利用這兩點得到了一種改進後的插入排序。希爾排序 將無序陣列分割為若干個子串行,子串行不是逐段分割的,而是相隔特定的增量的子串行,對各個子串行進行插入排序 然後再選擇乙個更小的增量,再將陣列分割...

理解希爾排序

最近回顧了一下the c programming language,其中提到了乙個用來演示 for 迴圈的小例子,如下 shell sort void shellsort int,int int main int b shellsort b,10 void shellsort int v,int n...