C用語言排序演算法 希爾排序(例項)

2021-10-09 12:31:24 字數 683 閱讀 3763

希爾排序:在直接插入排序的思想下設定乙個最小增量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提出的方法。所以就叫...