排序演算法(四) 希爾排序 增量排序

2021-10-10 20:44:02 字數 709 閱讀 6227

希爾排序思想:

將現有資料分為d個組,在每個分組內使用直接插入排序演算法,使得整個資料段越來越有序。

接著繼續將資料分組並使用直接插入排序(分組會越來越小),直到分組為1。(每個分組數一般互質)

時間複雜度:o(n^1.3–1.5)

空間複雜度:o(1)

穩定性:不穩定

void

shell

(int

* arr,

int len,

int group)

*(q + group)

=*q;

if(q == arr)

*q = tmp;}}

}void

shellsort

(int

* arr,

int len)

;for

(int i =

0; i <

sizeof

(group)

/sizeof

(group[0]

); i++

)}

排序結果:

希爾排序增量怎麼確定 排序演算法之希爾排序

本文將介紹排序演算法中的希爾排序,它是高階版的插入排序,是我們第乙個介紹的有點難度的演算法。希爾排序,是插入排序的乙個公升級版本。在插入排序中,無論資料是怎麼分布的,依然循規蹈矩的一步一步比較,移動,插入。在希爾排序中,採用跳躍式的方式,按照某個增量gap將陣列元素分成多組序列,並使用插入排序使得各...

排序演算法 四 希爾排序

希爾排序是插入排序的一種優化實現,比直接插入排序演算法更高效。也是第一批演算法時間複雜度突破o n 2 的演算法之一。因 d.l.shell 於 1959 年提出而得名。希爾排序是把集合資料按下標的一定增量分組,對每組使用直接插入排序演算法排序 隨著增量的減少,集合資料越來越接近整體有序。當增量減至...

希爾排序的增量怎麼算 排序演算法之希爾排序

希爾排序是希爾 donald shell 於1959年提出的一種排序演算法。希爾排序也是一種插入排序,它是簡單插入排序經過改進之後的乙個更高效的版本,也稱為縮小增量排序,同時該演算法是衝破o n2 的第一批演算法之一。簡單插入排序很循規蹈矩,不管陣列分布是怎麼樣的,依然一步一步的對元素進行比較,移動...