內部排序演算法之希爾排序

2021-06-19 16:30:43 字數 337 閱讀 9011

希爾排序是在簡單插入排序上做了改進。待排序系列長度記為n,增量d一般取從n/2, n/4, n/8...到1的序列。希爾增量的選取決定了排序的效率。將待排序系列中,元素下標間距為d的所有元素分為一組, 對每組進行簡單插入排序。當d減少到等於1使,最後做一次簡單插入排序。

如果對簡單插入排序很熟悉,實現希爾排序難度不大

int shell_sort(int *p, int n)

p[j+d] = k;

} }}

希爾排序的效率優於o(n^2)的演算法,差於o(n*lgn)的演算法。最差情況和最好情況效率相差不大。中小型規模可以先用該排序演算法。

內部排序之插入排序 希爾排序

插入排序 insertion sort 插入排序由n 1趟 pass 排序組成,對於p 1趟到p n 1趟,插入排序可以保證從位置零到位置p上的元素全部有序,有這樣乙個事實 1 當插入p位置 設為data 的時候,從0位置到p 1已全部有序,如果data比p 1位置上的元素大,那麼直接放在p位置即可...

排序演算法之希爾排序

希爾排序實際上是一種分治思想的插入排序。插入排序不說了,不清楚看這裡 分治思想,對增量為dk,dk遞減,開始很多小序列,最後為乙個大序列 相對直接插入排序,在希爾排序中,只不過增量不是1,而是dk 較好的增量序列是2 k 1,2 k 1 1,7,3,1,這樣可使shell排序時間複雜度達到o n 1...

排序演算法之希爾排序

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