排序演算法 希爾排序

2021-08-28 12:48:27 字數 665 閱讀 2887

希爾排序是插入排序的一種改進,該演算法衝破o(n2)的第一批演算法之一。希爾排序通過比較相距一定間隔的元素進行工作,距離隨著演算法的進行而減小,直到只比較相鄰元素的最後一趟排序為止。因此,希爾排序也叫縮小增量排序。希爾排序的最壞時間為n的二次方,不過使用不同的增量序列可使得最壞執行時間降低。

1.1希爾排序的基本步驟

計算增量gap=length/2;

對每一組gap進行簡單的插入排序;

繼續以gap = gap/2的方式縮小增量;

重複2和3,直至增量為1,最後一次進行簡單的插入排序。

1.2**(c實現)

#include //希爾排序,給出乙個陣列,進行排序

void shellsort(int arr, int n);

int main()

; shellsort(arr, 7);

int i;

for(i = 0; i < 7; i++)

return 0;

}void shellsort(int arr, int n)

}

[1]

排序演算法 希爾排序

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

排序演算法 希爾排序

摘要 排序演算法有很多,最簡單的有氣泡排序和插入排序,這兩種方法都具有o n 2 的時間界.我們想要討論的是具有更好的時間界的排序演算法,比如希爾排序.1 希爾排序的思路是通過比較一定間距的元素來進行排序,最後再對所有相鄰元素進行一次插入排序.2 希爾排序最重要的引數是增量序列 h1,h2,ht 只...

排序演算法 希爾排序

希爾排序,也稱遞減增量排序演算法,是插入排序的一種更高效的改進版本。希爾排序是非穩定排序演算法。希爾排序通過將比較的全部元素分為幾個區域來提公升插入排序的效能。這樣可以讓乙個元素可以一次性地朝最終位置前進一大步。然後演算法再取越來越小的步長進行排序,演算法的最後一步就是普通的插入排序,但是到了這步,...