希爾排序:在直接插入排序的思想下設定乙個最小增量dk,剛開始dk設定為n/2。進行插入排序,隨後再讓dk=dk/2,再進行插入排序,直到dk為1時完成最後一次插入排序,此時陣列完成排序。
#include
// 進行插入排序 初始時從dk開始增長,每次比較步長為dk
void
insrtsort
(int
*a,int n,
int dk)
a[j + dk]
= tmp;
// 插入tmp}}
}void
shellsort
(int
*a,int n)
}int
main()
;int n =
sizeof
(a)/
sizeof
(int);
shellsort
(a, n)
;printf
("排序好的陣列為:");
for(
int j =
0; j < n; j++
)printf
("\n");
system
("pause");
return0;
}
C用語言排序演算法 直接選擇排序(例項)
直接選擇排序 依次選出陣列最小的數放到陣列的前面。首先從陣列的第二個元素開始往後遍歷,找出最小的數放到第乙個位置。再從剩下陣列中找出最小的數放到第二個位置。以此類推,直到陣列有序。include void selectsort int a,int n if key i intmain int n s...
C用語言排序演算法 歸併排序(例項)
歸併排序 歸併演算法應用到分治策略,簡單說就是把乙個答問題分解成易於解決的小問題後乙個個解決,最後在把小問題的一步步合併成總問題的解。這裡的排序應用遞迴來把陣列分解成乙個個小陣列,直到小陣列的數字有序,在把有序的小陣列兩兩合併而成有序的大陣列。include include include defi...
C語言排序演算法總結 希爾排序
之前我們總結了比較簡單的幾種排序方法。冒泡,選擇,排序。但是也提到了這些排序方法的缺陷。時間複雜度太高,在有大量資料需要排序的時候,會需要浪費太多的時間。所以在很多場景中是不適合使用。我們這次總結一種時間複雜度更優秀的希爾排序。希爾排序是以插入排序為基礎的改進版本。是由shell提出的方法。所以就叫...