演算法時間複雜度

2021-08-18 14:21:27 字數 772 閱讀 1832

三個迴圈:

for x in ...

for y in ...

for z in ..

時間複雜度o(n^3)

對於二迴圈:

for 0..n

for 0..m

在運算過程成,需要的步數是n*m,那麼稱呼它的複雜度是o(n^2),

n衡量的是你的演算法,步數上公升的乙個量級

如果是乙個for 0..n的演算法,那麼時間複雜度是o(n)

如果是:x = 10,這樣一行完成的**,它的複雜度是o(1)

也許你的o(n)的演算法,會比o(n^2)的演算法所花的時間長,因為你那個o(n)的演算法,可能需要處理100萬個資料

而你那個o(n^2)的演算法可能只需要處理100個資料,那麼100*100 = 10000,還是比一百萬資料的處理時間少

但是衡量演算法效能好壞不看那個絕對時間,看這個大o,因為你的複雜度是o(n^2)的話,它隨著資料量的增大,它的時間上公升特別快

o(n)則是線性上公升,當然,大o的複雜度如果是指數或者是階乘,那就是複雜度很高,效率很低的演算法,那就是複雜度很高,效率很低的演算法

二分查詢法,時間就是o(ln),因為每次都是除以2,所需步數的量級就是lnn

所以上面這個演算法的複雜度是o(n^2)

我們可以把它降到o(n*lnn)

如果把其中乙個for去掉,換成乙個二分查詢,加乙個中間陣列

就可以實現

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

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

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

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