希爾排序可以看成是插入排序的優化版,其核心排序步驟與插入排序基本相同,但是唯一不同
的是希爾排序對排序陣列中資料排序思想的優化。為什麼要優化插入排序,由於插入排序對於
大規模亂序陣列的排序是很慢的,因為在插入排序中資料元素需要一點一點的從陣列一端移動
到另外一端,這無疑在大規模亂序陣列中是乙個不好的體驗。
希爾排序基本思路:
希爾排序在選取排序陣列集採用了分組插入排序的方式,其通過乙個gap增量每隔gap量選取一
個陣列中元素。對於每乙個組中的元素進行插入排序後縮小gap增量,如此往復直到gap=1,這
樣就使得在一定範圍內資料基本有序,再通過插入排序思想進行資料的微調大大減少了排序時間。
測試資料:(gap增量選擇data.length/2)
初始資料:4 2 1 5
(第一輪分組[4,1] [2,5],進行插入排序)
第一輪排序結果:1 4 2 5
(第二輪gap=1,則直接進行插入排序)
第二輪排序結果:1 2 4 5
(排序完成)
參考**
public static int sort(int data)
data[j]=temp;}}
return data;
}
排序演算法 希爾排序
如果乙個排序演算法,每次只把諸專案移動乙個位置,則它的平均執行時間至少要和n2成比例.因為在這個排序演算法執行的過程當中,每個記錄平均都必須遍歷n 3個位置,因此如果要對直接插入排序進行有效的,實質性的改進的話,就要有一種演算法,它可以使記錄做長距離的跳躍,而不是一步一步的挪動.希爾排序也是一種插入...
排序演算法 希爾排序
摘要 排序演算法有很多,最簡單的有氣泡排序和插入排序,這兩種方法都具有o n 2 的時間界.我們想要討論的是具有更好的時間界的排序演算法,比如希爾排序.1 希爾排序的思路是通過比較一定間距的元素來進行排序,最後再對所有相鄰元素進行一次插入排序.2 希爾排序最重要的引數是增量序列 h1,h2,ht 只...
排序演算法 希爾排序
希爾排序,也稱遞減增量排序演算法,是插入排序的一種更高效的改進版本。希爾排序是非穩定排序演算法。希爾排序通過將比較的全部元素分為幾個區域來提公升插入排序的效能。這樣可以讓乙個元素可以一次性地朝最終位置前進一大步。然後演算法再取越來越小的步長進行排序,演算法的最後一步就是普通的插入排序,但是到了這步,...