希爾排序小結

2022-05-04 04:15:08 字數 705 閱讀 9931

希爾排序

希爾排序就是將給定陣列分成多個部分,進行插入排序。每次分組步長gap為n/2,即是每隔gap的數都是一組的。簡單的說如果乙個陣列長度為10,gap為2時,那麼0,2,4,6,8,為一組,1,3,5,7,9為一組。然後分別對這兩組進行插入排序。gap一般定為n/2,以此迴圈下去,n/2/2,每次步長為上一次的一半,直到gap==1時,那麼在n==1完成後,最終排序也就完成了。

希爾排序圖

如上圖陣列顏色一樣的為一組,然後對這一組,進行插入排序。初始資料為  5,4,6,8,7,3,0,1 第一步gap==8/2。

分組情況為 分別對這四組插入排序

最後資料為

gap==2時分組情況為 分別插入排序結果是 最後資料結果是

如此迴圈直到n==1完成排序。

**實現:

void shellsort1(int a, int

n)

a[k + gap] =temp;}}

}}

}

希爾排序小結

當乙個系列有序時,用直接插入排序的時間複雜度為o n2 當系列基本有序時,用直接插入排序的效率也較高.由於直接插入排序簡單,且當系列的規模較小時效率比較高,希爾排序正是從這兩點出發對直接插入排序進行改進得到的一種排序方法。希爾排序的基本思想是 先將整個待排記錄系列分割成若干個子系列分別進行直接插入排...

排序 希爾排序

希爾排序 shell sort 又稱為縮小增量排序,輸入插入排序演算法,是對直接排序演算法的一種改進。本文介紹希爾排序演算法。對於插入排序演算法來說,如果原來的資料就是有序的,那麼資料就不需要移動,而插入排序演算法的效率主要消耗在資料的移動中。因此可知 如果資料的本身就是有序的或者本身基本有序,那麼...

排序 希爾排序

縮小增量排序 待排序列按關鍵字基本有序時,直接插入排序的效率很高 希爾排序思想 將整個待排記錄分割為若干子串行分別進行直接插入排序,待整個序列中的記錄基本有序時,再對全體記錄進行一次直接插入排序,就可以完成整個排序工作 增量序列中的值沒有除1以外的公因子,且最後乙個增量必須等於1 子串行的構成不是逐...