希爾排序是插入排序的一種高效演算法,遞增量排序。我理解為步數排序
因為每次進行一次迴圈的時候,會給這次迴圈乙個跨度(也就是你一次能邁多少步)
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...