Swift經典算法-希爾排序法

希爾排序

希爾排序,也稱遞減增量排序算法,是插入排序的一種更高效的改進版本。但希爾排序是非穩定排序算法。

希爾排序是基於插入排序的以下兩點性質而提出改進方法的:

插入排序在對幾乎已經排好序的數據操作時,效率高,即可以達到線性排序的效率;

但插入排序一般來說是低效的,因爲插入排序每次只能將數據移動一位;

希爾排序的基本思想是:先將整個待排序的記錄序列分割成爲若干子序列分別進行直接插入排序,待整個序列中的記錄「基本有序」時,再對全體記錄進行依次直接插入排序。

  1. 算法步驟

1⃣️選擇一個增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;

2⃣️按增量序列個數 k,對序列進行 k 趟排序;

3⃣️每趟排序,根據對應的增量 ti,將待排序列分割成若干長度爲 m 的子序列,分別對各子表進行直接插入排序。僅增量因子爲 1 時,整個序列作爲一個表來處理,表長度即爲整個序列的長度。

  1. 代碼實現
    在這裏插入圖片描述

更多算法知識,掃碼關注以下微信公衆號:在這裏插入圖片描述