要說希爾排序首先要明白插入排序,排序—插入排序 :
插入排序是直接對陣列進行迴圈插入,二希爾排序是先把陣列分隔成多個特別的陣列,然後再對分割出來的陣列進行插入排序。
該如何對陣列進行分割呢? 取乙個步長 step =array.length,,然後for(int i =0;i執行示例:
原陣列: 21、8、2、18、0、9、27、12、5、24、13、
第0次迴圈排序結果: 9、8、2、18、0、13、27、12、5、24、21、
第1次迴圈排序結果: 9、8、2、18、0、13、27、12、5、24、21、
第2次迴圈排序結果: 9、8、2、18、0、13、27、12、5、24、21、
第3次迴圈排序結果: 9、8、2、5、0、13、27、12、18、24、21、
第4次迴圈排序結果: 9、8、2、5、0、13、27、12、18、24、21、
第5次迴圈排序結果: 0、8、2、5、9、13、18、12、21、24、27、
第6次迴圈排序結果: 0、5、2、8、9、12、18、13、21、24、27、
第7次迴圈排序結果: 0、2、5、8、9、12、13、18、21、24、27、
public void shellsort(int array) else }}printarray("第" + time++ + "次迴圈排序結果: ", array);}}
}
排序 希爾排序
希爾排序 shell sort 又稱為縮小增量排序,輸入插入排序演算法,是對直接排序演算法的一種改進。本文介紹希爾排序演算法。對於插入排序演算法來說,如果原來的資料就是有序的,那麼資料就不需要移動,而插入排序演算法的效率主要消耗在資料的移動中。因此可知 如果資料的本身就是有序的或者本身基本有序,那麼...
排序 希爾排序
縮小增量排序 待排序列按關鍵字基本有序時,直接插入排序的效率很高 希爾排序思想 將整個待排記錄分割為若干子串行分別進行直接插入排序,待整個序列中的記錄基本有序時,再對全體記錄進行一次直接插入排序,就可以完成整個排序工作 增量序列中的值沒有除1以外的公因子,且最後乙個增量必須等於1 子串行的構成不是逐...
排序 希爾排序
希爾排序是插入排序中的乙個分支,但是較簡單插入排序又有較大的改進,這使得它成為了歷史上第一批突破二次時間屏障的排序演算法之一哦。它是通過比較一定間隔的元素來工作的。因此希爾排序又稱為縮小增量排序。直接插入排序對於原始資料基本有序的情況下,效率較高。在此的基礎上。我們可以想辦法,使資料基本有序,然後利...