資料結構 十大經典排序演算法之希爾排序

2021-10-06 06:19:10 字數 713 閱讀 7544

第一部分:演算法思想

希爾排序由shell在2023年發明,又叫縮小增量排序,是第乙個突破o(n^2)的排序演算法,屬於簡單插入排序的改進版,會優先比較距離較遠的元素。

第二部分:演算法步驟

選擇乙個增量序列;每趟排序,根據對應的增量,將待排序列分割成若干子串行,分別對各子串行進行直接插入排序;按增量序列個數,對序列進行趟排序。

第三部分:演算法動態演示

下圖的增量序列為:5,2,1,第一趟排序將增量為5的子串行進行插入排序,第二趟排序將增量為2的子串行進行插入排序,第三趟將增量為1的子串行進行插入排序,最終完成排序。

第四部分:部分**實現

void

sort_array

(int

*arr,

int n)

// 程式設計實現《希爾排序演算法》

// 函式引數:亂序整數陣列 陣列長度

// 函式返回值:返回從小到大排序後的陣列

;for

(int g=

0; g<

3; g++

)else}}

}}

十大經典排序演算法 希爾排序

一 演算法複雜度 二 演算法步驟 1 選擇乙個增量序列 t1,t2,tk,其中 ti tj,tk 1 2 按增量序列個數 k,對序列進行 k 趟排序 3 每趟排序,根據對應的增量 ti,將待排序列分割成若干長度為 m 的子串行,分別對各子表進行直接插入排序。僅增量因子為 1 時,整個序列作為乙個表來...

資料結構 十大經典排序演算法

0演算法概述 0.1演算法分類 十種常見排序演算法可以分為兩大類 比較類排序 通過比較來決定元素間的相對次序,由於其時間複雜度不能突破o nlogn 因此也稱為非線性時間比較類排序。非比較類排序 不通過比較來決定元素間的相對次序,它可以突破基於比較排序的時間下界,以線性時間執行,因此也稱為線性時間非...

資料結構 十大經典排序演算法之氣泡排序

演算法思想 氣泡排序重複地遍歷待排序的數列,每次比較兩個相鄰元素,如果它們的順序錯誤就把它們交換。重複地進行遍歷直到沒有再需要交換時表示數列已經排序完成。演算法步驟 比較相鄰的元素 若第乙個比第二個大,則交換 遍歷開始第一對到結尾最後一對,執行步驟1 重複步驟1 2,直到排序完成。可改進的氣泡排序 ...