速度取決於計算模型【哪些操作是被允許的】
在模型中只能進行兩兩之間的大小比較來決定順序
比較排序的演算法速度不會超過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。雖然這幾個演算法排序的時間複雜度很低,但是這幾個演算法都有一...