常用排序演算法 希爾排序

2021-06-17 18:47:26 字數 527 閱讀 9110

希爾排序

簡單描述:希爾排序是對插入排序的改進,插入排序每次只能移動一位,速度較慢;通過對資料進行分組,可以實現跨越式移動。

基本思想:

(1)首先是步長的選擇,首先是陣列長度的一半,然後再每次減半最後直到步長為1;

(2)按照步長對資料進行插入排序;

時間複雜度:比簡單插入排序(o(n^2))要好,是在o(nlogn)~o(n^2)之間,平均時間複雜度為o(n^3/2)

空間複雜度:原地排序  o(1)

穩定性:不穩定

實現**(c語言)

#include#includevoid shellsort(int a,int len)

}} }

}void showarray(int a,int len)

int main()

; showarray(a,7);

shellsort(a,7);

showarray(a,7);

return 0;

}

常用排序演算法 希爾排序

希爾排序算是插入排序的一種,是改進版的直接插入排序,和直接插入排序不同的是它是按組進行插入排序的。步驟如下 取乙個整數d1 n 2,將元素分成d1個組,每組相鄰元素之間距離d1,然後在每組內部進行直接插入排序。取第二個整數d2 d1 2再將元素分成d2個組,然後再在每組內部進行插入排序。重複上面的步...

常用排序演算法 希爾排序

希爾排序演算法的具體做法為 假設待排序元素序列有n個元素,取乙個小於n的整數增量值incremen作為間隔,將全部元素分為increment個子序列,將所有距離為increment的元素放在乙個序列中,並對每乙個序列執行直接插入排序。然後縮小increment,重複上述劃分子串行和排序的過程,直到最...

排序演算法 希爾排序

如果乙個排序演算法,每次只把諸專案移動乙個位置,則它的平均執行時間至少要和n2成比例.因為在這個排序演算法執行的過程當中,每個記錄平均都必須遍歷n 3個位置,因此如果要對直接插入排序進行有效的,實質性的改進的話,就要有一種演算法,它可以使記錄做長距離的跳躍,而不是一步一步的挪動.希爾排序也是一種插入...