algorithms_rogramming.jpg
今天我們繼續把時間復雜度這件來說清楚,在今天硬件條件下我們更重視時間復雜度,所以有人提到用空間來換時間,畢竟時間是寶貴的。在算法中,時間復雜度度是一個單位,而不是具體用的時間,這一點希望大家一定要清楚,我們通過不同量級(單位)來衡量單位。例如我們平時使用時間單位,時、分和秒,而不是具體用了幾個小時。
而不是具體給出某一個算法具體耗時。這一點對于初學者可能是比較confusing
常數階
console.log("hello world")
這里執行一個操作就是 一個常數操作,輸出三次 HelloWorld 也只算
這里 1 表示常數單位而不是具體數字 1 的意思。
線性階
var N = 10;
for(let i = 0; i < N; i++){
console.log("hello world");
}
這里有一個循環說明執行 helloWord 輸出操作與 N 有關所以記做
平方階
for(let i =0; i < N; i++){
for(let j=0; j< N; j++){
console.log(i)
}
}
立方階
for(let i =0; i < N; i++){
for(let n=0; n< N; n++){
for(let m =0; m < N; m++){
console.log(i)
}
}
}
到現在大家不難發現就是有幾層 for 循環,時間復雜度就是 n 的幾次方。
對數階
var N = 32
while(N > 0){
console.log("hello world")
N = N/2
}
這里我們要說一件事,就是這個 要遠遠小于
只要我們記住
var N = 100
for(let i=1; i<N; i++)
{
i = 1;
while(i<N)
{
i = i * 2;
}
}