05算法-線性時間排序

簡介

本文主要介紹決策樹模型,推導了基於比較的排序算法的最快速度,然後給出了一種在特定條件下的線性時間複雜度的排序算法。

decision-tree model

這裏決策樹就不多做介紹,其本質就是通過比較來給出所有排序結果的模型。基於比較的算法,merge sort, insertion sort, quick sort, heap sort這一類算法,都可以用決策樹模型來描述
根據推論,一顆完整的決策樹,需要>=n!>=n!的葉子(這裏可以使用排列組合的知識,要想構建一個數列完整的決策關係,至少需要n!n!次比較)
因此使用完全二叉樹去構建這個決策樹,得到的樹的深度肯定是最小的。就有n!<=2hn!<=2^h
上面的公式是可以證明基於比較的排序算法,最快爲nlgn

Counting sort

counting sort是有一定前提的,就是對於A[i](1<=i<=n)A[i](1<=i<=n),都有1<A[i]<k1<A[i]<k。僞代碼如下:

for j = 1 to k
   C[j] = 0
for i = 1 to n
   C[A[i]] = C[A[i]] +1
for j = 2 to k
   C[j] = C[j]+C[j-1]
for i = n to 1
   B[C[A[i]]] = A[i]
   C[A[i]] = C[A[i]]-1

其running time isΘ(n+k)\Theta(n+k)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章