時間複雜度:最好 o(n)=o(nlogn);平均o(n)=depends on gap;最差o(n)=o(n²)
空間複雜度:o(n)=o(1)
穩定性: 不穩定
定義乙個間隔增量gap,gap小於待排序序列長度。
根據增量gap將待排序序列進行分組,對每一組進行簡單插入排序。
gap減小。若gap>=1則繼續執行步驟1,否則排序結束。
來自維基百科
現有乙個長度為10待排序陣列s:[9,1,5,3,8,7,2,4,6,0]
第一次選擇增量為gap=s.length/2,以gap=gap/2的方式縮小增量
四 希爾排序
希爾排序是一種基於插入排序的快速的排序演算法,對於大規模亂序陣列插入排序很慢,因為它之後交換相鄰的元素,因此元素只能一點一點地從陣列的一端移動到另外一端。希爾排序為了加快速度簡單地改進了插入排序,交換不相鄰的元素對陣列的區域性進行排序,並最終用插入排序將區域性有序的陣列排序。希爾排序的思想是使陣列中...
排序演算法 四 希爾排序
希爾排序是插入排序的一種優化實現,比直接插入排序演算法更高效。也是第一批演算法時間複雜度突破o n 2 的演算法之一。因 d.l.shell 於 1959 年提出而得名。希爾排序是把集合資料按下標的一定增量分組,對每組使用直接插入排序演算法排序 隨著增量的減少,集合資料越來越接近整體有序。當增量減至...
排序演算法(四) 希爾排序 增量排序
希爾排序思想 將現有資料分為d個組,在每個分組內使用直接插入排序演算法,使得整個資料段越來越有序。接著繼續將資料分組並使用直接插入排序 分組會越來越小 直到分組為1。每個分組數一般互質 時間複雜度 o n 1.3 1.5 空間複雜度 o 1 穩定性 不穩定 void shell int arr,in...