希爾排序思想:
將現有資料分為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 的第一批演算法之一。簡單插入排序很循規蹈矩,不管陣列分布是怎麼樣的,依然一步一步的對元素進行比較,移動...