希爾排序法又稱縮小增量法。利用越有序,插排效率越大的特性,再進行插排之前進行預排序,讓數列盡可能的有序,希爾排序法的基本思想是:
即對陣列元素依次進行分組插排,一般將增量選擇為d1 = size / 3 + 1
,這個由經驗得出
下圖很好的闡述了希爾排序的思想,也有詳細排序過程:
// 希爾排序(遞增)
void
shellsort
(int array,
int size)
array[j + gap]
= array[j];}
array[j + gap]
= k;}if
(gap ==1)
}}
測試資料:int array = ;
時間複雜度空間複雜度
排序穩定性
排序4 插入排序(希爾排序)
從前面的介紹可以看到,一般情況下,對於同一序列的排序,儘管在實際的操作次數上我們進行了不斷的改進,但是,仍然無法改變其時間複雜度為o n2 的事實,因此,當序列元素個數n變得越來越大時,之前所介紹的排序演算法在效能上的改進也將顯得無力。在插入排序中,有種排序或許能在n比較大的時候,在效能上有較好的表...
排序演算法 插入排序 希爾排序
1 相鄰資料之間相比較。先是1,0 然後2,1 1,0 以此類推 總結 大for從1 n 小for從i 0,之後判斷交換即可 public void charusort for int i 1 i a.length i 2 希爾排序是插入排序特殊化,他不再比相鄰資料,而是可以比較類似1,4,13.的...
插入排序演算法 希爾排序
插入排序演算法 希爾排序 希爾排序思想是將陣列每次分成不同的陣列同時進行排序,劃分的方式是設定增量值,即h length 2,h 2 與直接排序最大的不同就是比較的陣列值下標間隔不同。希爾排序在資料量龐大的時候進行排序效率高,時間短。觀察下圖,根據以上思想,進行移動。如下 include void ...