排序演算法時間複雜度和空間複雜度比較

2021-07-28 14:07:38 字數 1254 閱讀 1079

n^2表示n的平方,選擇排序有時叫做直接選擇排序或簡單選擇排序

排序方法平均時間最好時間最壞時間

桶排序(不穩定)

o(n)

o(n)

o(n)

基數排序(穩定)

o(n)

o(n)

o(n)

歸併排序(穩定)

o(nlogn)

o(nlogn)

o(nlogn)

快速排序(不穩定)

o(nlogn)

o(nlogn)

o(n^2)

堆排序(不穩定)

o(nlogn)

o(nlogn)

o(nlogn)

希爾排序(不穩定)

o(n^1.25)

氣泡排序(穩定)

o(n^2)

o(n)

o(n^2)

選擇排序(不穩定)

o(n^2)

o(n^2)

o(n^2)

直接插入排序(穩定)

o(n^2)

o(n)

o(n^2)

o(n)這樣的標誌叫做漸近時間複雜度,是個近似值.各種漸近時間複雜度由小到大的順序如下

o(1) < o(logn) < o(n) < o(nlogn) < o(n^2) < o(n^3) < o(2^n) < o(n!) < o(n^n)

一般時間複雜度到了2^n(指數階)及更大的時間複雜度,這樣的演算法我們基本上不會用了,太不實用了.比如遞迴實現的漢諾塔問題演算法就是o(2^n).

平方階(n^2)的演算法是勉強能用,而nlogn及更小的時間複雜度演算法那就是非常高效的演算法了啊.

氣泡排序,簡單選擇排序,堆排序,直接插入排序,希爾排序的空間複雜度為o(1),因為需要乙個臨時變數來交換元素位置,(另外遍歷序列時自然少不了用乙個變數來做索引)

快速排序空間複雜度為logn(因為遞迴呼叫了) ,歸併排序空間複雜是o(n),需要乙個大小為n的臨時陣列.

基數排序的空間複雜是o(n),桶排序的空間複雜度不確定

所有排序演算法中最快的應該是桶排序(很多人誤以為是快速排序,實際上不是.不過實際應用中快速排序用的多)但桶排序一般用的不多,因為有幾個比較大的缺陷.

1.待排序的元素不能是負數,小數.

2.空間複雜度不確定,要看待排序元素中最大值是多少.

所需要的輔助陣列大小即為最大元素的值.

演算法複雜度 時間複雜度和空間複雜度

1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...

演算法複雜度 時間複雜度和空間複雜度

演算法複雜度 時間複雜度和空間複雜度 關鍵字 演算法複雜度 時間複雜度 空間複雜度 1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時 間多,哪個演算法花費的時間少就可以...

演算法複雜度 時間複雜度和空間複雜度

演算法的時間複雜度是指執行演算法所需要的計算工作量。n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t n 表示,若有某個輔助函式f n 存在乙個正...