shell排序基本思想及其複雜度分析

2021-08-19 02:03:25 字數 488 閱讀 5361

/*

* shell排序(希爾排序)

* 基本思想:希爾排序選取乙個增量h,也就是把整個陣列分成h份,對每乙份進行排序。

* 然後減少增量h,重複上述過程。

* 一般我們選取的遞增序列為:3*h+1   即1,4,13,40,.....

* 實現:用乙個while語句求出對應陣列我們所需要的最大h

* 然後在用乙個外層while迴圈控制h,每迴圈一次h=h/3;直至h自減至1;

* 內層是直接插入排序演算法,兩個for迴圈巢狀,外層for迴圈用來控制i  - a.length的自增

* 內層for迴圈用來找到i需要插入的位置。

* 複雜度分析:

* 時間複雜度:希爾排序最好情況是陣列正序,此時外層for迴圈執行一次+最外層while迴圈 0) }}

h = h / 3;

}}ps:博文為博主的學習筆記,演算法只是按照自己的理解簡單分析,初學者建議看詳細的**講解,如果有錯誤,歡迎交流指正

希爾排序基本思想

基本思想 先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同乙個組中。先在各組內進行直接插人排序 然後,取第二個增量d2 1重複上述的分組和排序,直至所取的增量dt 1 dt t l 2 1 即所有記錄放在同一組中進行直接插入排序為止。該方法實質上...

氣泡排序基本思想

原理 比較兩個相鄰的元素,將值大的元素交換至右端。每次獲得 最大 的數 思路 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重複第一...

dinic 演算法 基本思想及其模板

網路流博大精深 sideman語 乙個基本的網路流問題 感謝whd的大力支援 最早知道網路流的內容便是最大流問題,最大流問題很好理解 解釋一定要通俗 如右圖所示,有乙個管道系統,節點,有向管道,即有向圖一張.1 是源點,有無限的水量,4 是匯點,管道容量如圖所示.試問 4 點最大可接收的水的流量?這...