排序演算法 4 希爾排序 插入排序

2021-10-02 22:12:00 字數 614 閱讀 7647

希爾排序法又稱縮小增量法。利用越有序,插排效率越大的特性,再進行插排之前進行預排序,讓數列盡可能的有序,希爾排序法的基本思想是:

即對陣列元素依次進行分組插排,一般將增量選擇為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 ...