排序演算法 詳解希爾排序演算法

2021-10-04 11:55:18 字數 1031 閱讀 8758

希爾排序實際上是一種插入排序的優化,希爾排序的目的是先進行預排序,使陣列更加的有序,將需要排序的陣列分成n/gap個大小為gap的子陣列,對子樹組進行插入排序。

當gap等於1時,就相當於直接插入排序了。

例如: 9 8 7 6 5 4 3 2 1 排公升序

直接插入排序需要 45次

用希爾排序

時間複雜度: o(n1.3—n2)

空間複雜度為: o(1)

實現希爾排序的時候,通過查資料發現gap=3比較合理,但是我忘記一定要保證最後gap最小值為1,導致實現出現了問題。這個排序也比較簡單,我們要理解分組的原因,而且這裡處理非常的巧妙,不用分開用迴圈去遍歷,因為資料是連線儲存的,所以我們將陣列放在一起,一次迴圈就完成了。

希爾排序演算法(排序詳解)

希爾排序 shell sort 是插入排序 的一種。也稱縮小增量 我們分割待排序記錄的目的是減少待排序記錄的個數,並使整個序列向基本有序發展。而如上面這樣分完組後,就各自排序的方法達不到我們的要求。因此,我們需要採取跳躍分割的策略 將相距某個 增量 的記錄組成乙個子串行,這樣才能保證在子串行內分別進...

排序演算法 希爾排序

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

排序演算法 希爾排序

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