??個人主頁:個人主頁
??系列專欄:C語言試題200例
??推薦一款刷算法、筆試、面經、拿大公司offer神器?? 點擊跳轉進入網站
?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家
1、題目
題目: 實現希爾排序算法
希爾排序(Shell Sort)是插入排序的一種,它是針對直接插入排序算法的改進。
希爾排序又稱縮小增量排序,因 DL.Shell 于 1959 年提出而得名。
它通過比較相距一定間隔的元素來進行,各趟比較所用的距離隨著算法的進行而減小,直到只比較相鄰元素的最后一趟排序為止。
分析:
希爾排序時間復雜度是 O(n^(1.3-2)),空間復雜度為常數階 O(1)。希爾排序沒有時間復雜度為 O(n(logn)) 的快速排序算法快 ,因此對中等大小規模表現良好,但對規模非常大的數據排序不是最優選擇,總之比一般 O(n^2 ) 復雜度的算法快得多。
過程圖示:
希爾排序目的為了加快速度改進了插入排序,交換不相鄰的元素對數組的局部進行排序,并最終用插入排序將局部有序的