演算法導論系列筆記之線性時間排序

2021-10-02 19:47:58 字數 625 閱讀 9868

速度取決於計算模型【哪些操作是被允許的】

在模型中只能進行兩兩之間的大小比較來決定順序

比較排序的演算法速度不會超過nlgn

決策樹

決策樹模型

證明

確定性演算法:它執行的每一步都是完全正確的

偽**
counting-sort(a,b,k)

let c[0…k] be a new array //記錄各個數出現的頻率

for i=0 to k

c[i] = 0

for j=1 to a.length

c[a[j]] = c[a[j]] +1

for i=1 to k

c[i] = c[i]+c[i-1]

for j=a.length downto 1

b[c[a[j]]] = a[j]

c[a[j]] = c[a[j]]-1

重要性質
線性時間內處理大規模資料

想法分析

計數排序(線性時間排序) 演算法導論

之前的排序都是通過比較得到的,即比較排序 在排序的最終結果中,各元素的次序依賴與它們之間的比較。而時間複雜度最好的也是o nlgn 接下來說乙個未經比較的排序,而複雜度則是線性的。計數排序 假設n個輸入元素的每乙個都是在0 k區間內的乙個整數,其中k為某個整數。當k o n 時,排序的執行時間為o ...

演算法導論學習之線性時間排序 排序演算法穩定性總結

前面我們學習的幾種排序演算法都是基於比較的,對於任何輸入資料他們都是適用的,其最壞的時間複雜度不會低於nlgn 但對於一些比較特殊的輸入資料,我們可以不採取比較的方法而是採用其它的方法對其進行排序,以達到線性的時間複雜度。下面就來介紹三種這樣的演算法 計數排序,基數排序,桶排序 因為這幾種演算法不常...

《演算法導論》總結(一) 線性時間排序演算法

演算法導論 第一部分,第8章。這章介紹了3個線性時間排序的演算法,也就是在o n 的時間內排序的演算法,o n 時間複雜度是排序演算法時間的極限,簡單想一下也能明白,再好的演算法也總得將所有資料全部讀一遍才能知道順序,所以複雜度至少也是n。雖然這幾個演算法排序的時間複雜度很低,但是這幾個演算法都有一...