希爾排序(shell's sort)是插入排序的一種又稱「縮小增量排序」(diminishing increment sort),是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因d.l.shell於2023年提出而得名
注:建議先學習插入排序演算法,再產學習希爾排序演算法。
時間複雜度:o(n^2)
穩定性:不穩定
測試:排序前: 6 1 4 2 5 3
排序後: 1 2 3 4 5 6
原始碼:注:shell_sort和shell_sort2分別用兩種方式實現,shell_sort2完全基於插入排序演算法。
#include #include #include #define array_n 6
int array[array_n]=;
//int array[array_n]=;
void shell_sort(int array, int n)
else
}array[k + step] = tmp;}}
}}
}void shell_sort2(int array, int n)
}if (l != j - step)
array[k + step] = tmp;}}
}}
}int show_list(int array, int n)
printf("\n");
return 0;
}int main(void)
; show_list(array, array_n);
shell_sort(array, array_n);
//shell_sort2(array, array_n);
show_list(array, array_n);
return 0;
}
實現希爾排序演算法
實驗題目 實現希爾排序演算法 實驗目的 領會希爾排序的過程和演算法設計 實驗內容 設計程式,實現希爾排序演算法。用相關資料進行測試,並 輸出各趟的排序結果。基本思想 希爾排序是針對直接插入排序演算法的改進,該方法又稱縮小增量排序。先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分成d1個組。...
排序演算法 python實現希爾排序
coding utf 8 希爾排序,穩定性 是不穩定的 defshell sort alist n len alist gap n 2 取步長,總長度除2,取整數 i gap for i in range gap,n i gap,gap 1,gap 2,gap 3 n 1 while if alis...
java希爾排序演算法實現
希爾排序嚴格來說是基於插入排序的思想,又被稱為縮小增量排序。具體流程如下 1 將包含n個元素的陣列,分成n 2個陣列序列,第乙個資料和第n 2 1個資料為一對.2 對每對資料進行比較和交換,排好順序 3 然後分成n 4個陣列序列,再次排序 4 不斷重複以上過程,隨著序列減少並直至為1,排序完成。假如...