線性時間排序

2021-06-29 05:59:40 字數 1013 閱讀 2916

在最壞情況下任何比較排序演算法都需要做ω(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.插入排序,歸併排序,堆排序和快速排序那些是穩定的,有沒有一種...