演算法day1 4 時間複雜度分析

2021-10-23 03:47:32 字數 1058 閱讀 4428

int n=1000;

syetem.out.println("hey"+n);

這裡n只執行了一次,即n等於乙個數1000而已

int n=1000;

syetem.out.println("hey01"+n);

syetem.out.println("hey02"+n);

syetem.out.println("hey03"+n);

這裡面的n執行了3次,但是我們不嫩把它寫作o(3),這是錯誤的,o(1)代表的是它執行了常數時間複雜度

for(int i=1;i這個操作我把n帶入乙個簡單地數字你體會一下,比如n是8,這樣i就執行了3次,第一次i=1輸出hey1;第二次i為1×2=2即i=2輸出hey2;第三次i為2×2=4,即i=4輸出hey4;

可以看出他是執行了logn次。

for (int i=1;i<=n;i++)

這裡面含有for迴圈,第一句衝提到了i<=n 然後i進行加一操作,這個過程i一共執行了n次,其中每一次都輸出一次『hey』的語句,比如『hey1』『hey2』等等

for (int i=1;i<=n;i++)

for (int j=1;j<=n;j++)

如果此處出現了兩個for語句,你以為是o(n²)就錯了,不是說有幾個for就是n的幾次方,一定要看清楚for是不是並列的,或者他是不是巢狀在一起的。還有乙個問題就是並列的兩個for算不算是兩個n的複雜度呢,其實和o(1)是一樣的,o(n)只是表達時間複雜度。前面的常熟可以省略即寫成o(n)而不是o(2n) 一定要注意這個問題

for (int i=1;i<=n;i++)

}

這裡面應用了巢狀

兩個for迴圈,i執行n次,每一次中j又執行了n次,所以工之星了n²次

for (int i=1;i<=n;i++)

}}

同理,三個for迴圈,i執行n次,每一次中j又執行了n次,每一次中的k又執行了n次,所以工之星了n³次

Day2 時間複雜度演算法

複雜度分析是整個演算法學習的精髓,只要掌握了它,資料結構和演算法的內容基本上就掌握了一半。int cal int n return sum 總共執行了2n 2次 可以發現 所有 的執行時間 t n 與每行 的執行次數 n 成正比。t n 表示 執行的時間 n 表示資料規模的大小 f n 表示每行 執...

day5時間複雜度

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

演算法01 時間複雜度

演算法,通俗來說,就是被設計出來用於解決某個或某類問題,具有一定通用性的計算流程和方法。解決某個問題,通常有不止一種演算法。評價乙個演算法的優劣,從3個方面進行考察 時間複雜度 額外空間複雜度 常數項時間 通常用最壞時間複雜度 大寫o 來表示乙個演算法的時間複雜度。通常估計乙個演算法的時間複雜度是這...