排序演算法 希爾排序

2021-08-19 19:17:48 字數 801 閱讀 5890

希爾排序是一種經過改進且更高效的插入排序。

1.直接插入排序的缺點是每次只能移動乙個元素,即使我們可以「**」這個元素將處於靠前或者靠後的位置,我們也只能慢慢      移動。

2.希爾排序則克服了這個缺點,每次比較移動乙個增量的位置,從而使在做直接插入排序之前使元素處於乙個巨集觀有序的狀態。      而且在資料量很多的時候,希爾排序則比直接插入排序更高效。

3.希爾排序最後一次增量必定是一,也就是說希爾排序最後一趟過程就是直接插入排序。

演算法基本思想:

1.在插入排序的基礎上,將每次移動乙個位置換成增量d。

2.使增量為d的元素在乙個組裡面,然後進行組內排序,從而做到在最後一次增量為1的插入排序之前,使元素大概基本有序。

3.使增量d迴圈減少,初始值為n/2,但最後一次得值必須是1.

**演示:

public class shellsort

a[j+d]=get;

}d=d/2;

}for(int i=0;isystem.out.println(a[i]);}}

public static void main(string args) ;

shellsort(a,13);

}需要知道的幾點:

1.第一次迴圈,d==n/2;當i每迴圈一次時候,就變換了乙個組,當i迴圈到i==2d時,此時a[i]是第乙個組內的第三個元素,j也變為組內第二個元素.所以每次排序都是在組內進行排序。

2.希爾排序演算法在最壞的情況下和平均情況下執行效率相差不多。

3.增量的選取也十分影響希爾排序時間的複雜度。除了希爾增量還有其他幾種增量。

排序演算法 希爾排序

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

排序演算法 希爾排序

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

排序演算法 希爾排序

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