希爾排序(重溫經典演算法系列)

2021-10-23 01:22:12 字數 701 閱讀 7872

參考材料

希爾排序,又名縮小增量排序;

它是一種改進版本的直接插入排序法;

只不過直接插入排序是從左往右遍歷選擇帶插入的元素,再自右向左找到合適的插入位置;

而希爾排序是通過對原陣列進行分組,進而產生小規模的區域性有序的陣列,

接著再直接插入排序演算法實現高效排序的一種排序演算法.

本質是:

直接插入排序高效處理小規模的數列,因為元素越少往往越容易區域性有序.

1個元素有序,2個元素也有序(順序或者反序),3個元素則兩兩相鄰區域性有序……

詳細的原理說明,以及過程解析,請參考文章:

希爾排序的原理解析

//希爾排序,又名 縮小增量排序;

template

<

typename t>

void

shellsort

(t* arr,

const std::size_t n)

while

(inc)

arr[j + inc]

= temp;

} inc /

= cut;

}}

希爾排序演算法過程演示,請參考:

排序演算法過程演示

交流方式

氣泡排序(重溫經典演算法系列)

單個元素時肯定是有序的 故首元素單獨有序,從 1,n 為待排元素所在的區間 i 控制 n 1輪冒泡 即執行一系列兩兩元素對比的操作 第 i 輪能夠選出第 i 大 或者小 的元素值,n 1輪 選出 n 1 個較大 或者小 值之後,整個序列即可有序 for int i 1 i n i 外層i 控制 n ...

歸併排序(重溫經典演算法系列)

單個元素肯定有序 歸併排序採用分治思想,分而治之 將待排序陣列劃分為n等分,每份長度為1個元素,則 n份全部有序 再一生二,二生四,逐步兩兩元素有序的區間,歸一合併成1個有序區間 最終會歸併出整乙個陣列元素有序的結果.歸併排序有兩種實現方式 1 自頂向下遞迴呼叫實現 2 自底向上迭代執行實現.左右雙...

重溫經典演算法系列 動態規劃法

題記 曾經享受於演算法的或新穎或優美或簡潔,也曾經因領會熟知演算法在一些考試 競賽 如軟考和軟體開發比賽 和工作中屢試不爽,但是,近來一段時間,對於演算法這種靈魂類的東東似乎少有染指,實為遺憾,非常危險 演算法,是軟體開發中的瑰寶,是思維領域的奇葩,作為it人員,應該 必需的 應該作為一種素養,常習...