原理:
希爾排序是希爾在插入排序的基礎上的改進。
大概是先將待排陣列分為gap個陣列,每組中的每個數在陣列中的間隔為gap,分在在每組中進行插入排序,然後每次gap=gap/2,直到最後gap=1,還原為乙個組的資料,這時候陣列裡面的值就變為大致有序,最後進行一次插入排序,就得到了有序陣列。
圖示:
**實現:
public
class
shellsort
//遇到比temp小的數就可以退出迴圈了
else
break;}
arr[k+gap]
= temp;}}
}}}public
static
void
main
(string[
] args)
;new
selectsort()
.sort
(a,a.length)
; system.out.
println
(arrays.
tostring
(a));}
}
時間複雜度
希爾排序的時間複雜度與增量(即,步長gap)的選取有關。例如,當增量為1時,希爾排序退化成了直接插入排序,此時的時間複雜度為o(n²),而hibbard增量的希爾排序的時間複雜度為o(n3/2)。
希爾排序不是穩定演算法。
學習鏈結
排序演算法 希爾排序
如果乙個排序演算法,每次只把諸專案移動乙個位置,則它的平均執行時間至少要和n2成比例.因為在這個排序演算法執行的過程當中,每個記錄平均都必須遍歷n 3個位置,因此如果要對直接插入排序進行有效的,實質性的改進的話,就要有一種演算法,它可以使記錄做長距離的跳躍,而不是一步一步的挪動.希爾排序也是一種插入...
排序演算法 希爾排序
摘要 排序演算法有很多,最簡單的有氣泡排序和插入排序,這兩種方法都具有o n 2 的時間界.我們想要討論的是具有更好的時間界的排序演算法,比如希爾排序.1 希爾排序的思路是通過比較一定間距的元素來進行排序,最後再對所有相鄰元素進行一次插入排序.2 希爾排序最重要的引數是增量序列 h1,h2,ht 只...
排序演算法 希爾排序
希爾排序,也稱遞減增量排序演算法,是插入排序的一種更高效的改進版本。希爾排序是非穩定排序演算法。希爾排序通過將比較的全部元素分為幾個區域來提公升插入排序的效能。這樣可以讓乙個元素可以一次性地朝最終位置前進一大步。然後演算法再取越來越小的步長進行排序,演算法的最後一步就是普通的插入排序,但是到了這步,...