演算法時間複雜度是怎麼回事

2021-10-09 15:33:45 字數 664 閱讀 7091

時間複雜度

演算法的時間複雜度一般用大o階表示,那麼如何得出乙個演算法的大o階呢,流程如下:

用常數1取代執行時間中的所有加法常數

在修改後的執行次數函式中,只保留最高端項

如果最高端存在且不是1,則去除與這個項相乘的常數

其結果就是大o階

給乙個**幫助理解

執行次數

函式階非正式術語

12o(1)

常數階2n+3

o(n)

線性階3n^2+2n+1

o(n^2)

平方階5log n+20

o(log n)

對數階2n+3n log n +19

o(nlogn)

nlogn階

6n3+2n2+3n+5

n^3立方階

2^n+20

o(2^n)

指數階後面還有n!和n^n,但是種複雜度的演算法去使用也沒多大實際意義。

所有的演算法時間複雜度都用函式階表示而不關注具體的執行次數,至於為什麼這裡不做過多解釋

這些複雜度在**裡從上到下是依次從小到大的

對演算法的分析,一種方法是計算所有情況的平均值,這種時間複雜度的計算方法稱為平均時間複雜度。另一種方法是計算最壞情況下的時間複雜度,這種方法稱為最壞時間複雜度。一般在沒有特殊情況下,都是指最壞時間複雜度

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

演算法 是解決某一類問題的通法,即一系列清晰無歧義的計算指令。每個演算法只能解決具有特定特徵的一類問題,但乙個問題可由多個演算法解決。乙個演算法應該有以下五個方面的特性 比較演算法的優劣我們從兩個維度去進行考量 時間 空間 時間複雜度,空間複雜度 找出基本語句 演算法中執行次數最多的那條語句就是基本...

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

1 if i 1 2 a 1 result 3 4 result n 2 result 1000 1000 3 array.push a array.pop 4 map.set 1,1 map.get 1,1 在計算複雜度的時候,o 1 一般會被忽略。1 for let i 0 i n i 2 wh...

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

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