排序思路
待排陣列:arr[13]=
排後陣列:newarr[13]=?
第一輪:定義增量值d,通常首先設定d=arr.length/3+1
d = 13/3 + 1 = 5
從i=5+1=6的位置開始迴圈,依次對比 i 和 i-5 兩個位置的元素大小,當arr[i]>arr[i-5]時,位置不變;當arr[i]newarr= //相同顏色為一組子串行
第二輪:把增量值d縮小一半
d = 5/2 + 1 = 3
從i=3+1=4的位置開始迴圈,依次對比 i 和 i-3 兩個位置的元素大小,當arr[i]>arr[i-3]時,位置不變;當arr[i]newarr= //相同顏色為一組子串行
第三輪:把增量值d縮小一半
d = 3/2 + 1 = 2
從i=2+1=3的位置開始迴圈,依次對比 i 和 i-2 兩個位置的元素大小,當arr[i]>arr[i-2]時,位置不變;當arr[i]newarr= //相同顏色為一組子串行
第四輪:增量值d設定為1
d=1從i=1+1=2的位置開始迴圈,依次對比 i 和 i-1 兩個位置的元素大小,當arr[i]>arr[i-1]時,位置不變;當arr[i]newarr= //相同顏色為一組子串行
時間複雜度
o(n^3/2)
特點
1、是直接插入排序法的改進版本,優點是儲存了每一次對比的狀態。
2、把原始序列間隔增量值個位置的元素分為n個子序列,把每個子串行通過插入法整理成基本有序序列。
然後不斷縮小增量值,不斷整理成n個基本有序序列。
直到增量值等於1,基本有序序列就成為絕對有序序列。
排序演算法 希爾排序
如果乙個排序演算法,每次只把諸專案移動乙個位置,則它的平均執行時間至少要和n2成比例.因為在這個排序演算法執行的過程當中,每個記錄平均都必須遍歷n 3個位置,因此如果要對直接插入排序進行有效的,實質性的改進的話,就要有一種演算法,它可以使記錄做長距離的跳躍,而不是一步一步的挪動.希爾排序也是一種插入...
排序演算法 希爾排序
摘要 排序演算法有很多,最簡單的有氣泡排序和插入排序,這兩種方法都具有o n 2 的時間界.我們想要討論的是具有更好的時間界的排序演算法,比如希爾排序.1 希爾排序的思路是通過比較一定間距的元素來進行排序,最後再對所有相鄰元素進行一次插入排序.2 希爾排序最重要的引數是增量序列 h1,h2,ht 只...
排序演算法 希爾排序
希爾排序,也稱遞減增量排序演算法,是插入排序的一種更高效的改進版本。希爾排序是非穩定排序演算法。希爾排序通過將比較的全部元素分為幾個區域來提公升插入排序的效能。這樣可以讓乙個元素可以一次性地朝最終位置前進一大步。然後演算法再取越來越小的步長進行排序,演算法的最後一步就是普通的插入排序,但是到了這步,...