2020 算法時間復雜度和空間復雜度(補)

algorithms_rogramming.jpg

今天我們繼續把時間復雜度這件來說清楚,在今天硬件條件下我們更重視時間復雜度,所以有人提到用空間來換時間,畢竟時間是寶貴的。在算法中,時間復雜度度是一個單位,而不是具體用的時間,這一點希望大家一定要清楚,我們通過不同量級(單位)來衡量單位。例如我們平時使用時間單位,時、分和秒,而不是具體用了幾個小時。
而不是具體給出某一個算法具體耗時。這一點對于初學者可能是比較confusing

常數階 O(1)

console.log("hello world")

這里執行一個操作就是O(1) 一個常數操作,輸出三次 HelloWorld 也只算O(1) 這里 1 表示常數單位而不是具體數字 1 的意思。

線性階O(n)

var N = 10;

for(let i = 0; i < N; i++){
    console.log("hello world");
}

這里有一個循環說明執行 helloWord 輸出操作與 N 有關所以記做O(N)

平方階O(n^2)

for(let i =0; i < N; i++){
    for(let j=0; j< N; j++){
        console.log(i)
    }
}

立方階 O(n^3)

for(let i =0; i < N; i++){
    for(let n=0; n< N; n++){
        for(let m =0; m < N; m++){
            console.log(i)
        }
    }
}

T(n) = n * n * n = n^3到現在大家不難發現就是有幾層 for 循環,時間復雜度就是 n 的幾次方。

對數階O(\log n)

var N = 32
while(N > 0){
  console.log("hello world")
  N = N/2
}

這里我們要說一件事,就是這個 O(\log n) 要遠遠小于 O(n) 只要我們記住O(1) <

O(n \log n) 線性對數階

var N = 100
for(let i=1; i<N; i++)
{
    i = 1;
    while(i<N)
    {
        i = i * 2;
    }
}

T(n) = n * \log n

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容