在最壞情況下任何比較排序演算法都需要做ω(nlgn)次比較
計數排序:假設輸入的資料都屬於乙個小區間內的整數
counting-sort(a,b,k)
1. let c[0..k] be a
new array
2.for i=0
to k
3. c[i]=0
4.for j=1
to a.length
5. c[a(j)]=c[a(j)]+1
//c[i]為陣列a中等於i的元素的個數
6.for i=1
to k
7. c[i]=c[i-1]+c[i] //c[i]為陣列a中小於等於i的元素的個數
8.for j=a.length downto 1
9. b[c[a(j)]=a(j)
10. c[a(j)]=c[a(j)]-1
總的時間代價為 0(n+k)
桶排序 :*假設輸入資料服從均勻分布*,輸入的陣列包含n個元素,且每個元素都屬於(0,1)區間上,同時需要乙個臨時陣列存
bucket-sort(a)
1. n=a.length
2. let b[0...n-1] be a
new array
3.for i=0
to n-1
4. make b[i] be an
empty list
5.for i=1
to n
6. insert a[i] intp list b[小於等於na[i]的最大整數]
7.for i=0
to n-1
8.sort list b[i] with insertion sort
9. concatenate the lists b[0],b[1],...b[n-1] together in order
桶排序的期望執行時間為0(n)
這裡寫**片
「「`
線性時間排序
public void radixsort int a a k key 我們前面提到的方法,基本上都是比較排序,本篇介紹三種非比較型別的排序,計數排序 基數排序 桶排序,比較排序的最壞的情況都是經過nlgn的,線性排序的時間複雜度基本上都是線性關係。1.計數排序 計數排序不是通過元素之間的比較,而是...
線性時間排序
決策樹模型 用處 證明基於比較的排序的時間複雜度為 nlgn 簡單描述 二叉樹,有n 個葉節點,則此樹在最茂盛的時候有最小的高度h lg n nlgn 因此至少需要nlgn次比較 計數排序 描述 對n個位於區間 0,k 的元素進行排序,複雜度為o n k 的穩定排序 c 11 include inc...
線性時間排序習題
1.設計乙個演算法,對n個介於0 k之間的數進行預處理,然後能夠在o 1 的時間給出有多少個元素介於 a,b 之間 首先肯定要考慮a,b和k的相對大小,這裡就假設01.參照級數排序累計統計 2.對累計統計的結果中計算c b c a 1 2.插入排序,歸併排序,堆排序和快速排序那些是穩定的,有沒有一種...