【基礎】演算法的時間複雜度分析
1、什麼是時間複雜度?
- 首先,解決一個問題肯定有許多種方式可以實現,那麼如何評價一個演算法的好壞?處理相同的資料量,用時更少,用的空間更少。
- 那麼如何估算一個程式的執行時間與資料量的關係,這個函式就是演算法的時間複雜度。時間複雜度可被稱為是漸近的,程式指令運算次數。
- 空間複雜度是演算法在執行過程中臨時佔用儲存空間大小的量度。
2、如何計算時間複雜度?
- 既要知道常見演算法的複雜度,也要會分析自己程式的具體複雜度。
- 常見的有
O(n):KMP,尤拉篩法
O(nlogn):線段樹
O(n^2):某些dp
O(n^3):Floyd
O(2^n):二進位制列舉
O(n!):列舉排列 - 自己分析
樹的遞迴,logn
一層迴圈:n
。。。。。 - 更多請轉維基百科balabala的
2、如何在演算法題中運用時間複雜度?
- 演算法競賽一般給出1s的時間限制和256MB的空間限制。
- 對於1s的時間,能跑多少資料
O(logn):很大,longlong以內都行
O(n):10的7次方,也就是1000萬的資料
O(nlogn):5*10^5,大約50萬的資料
O(n^2):1000-5000左右
O(n^3):200-500左右
O(2^n):20-25
O(n!):12左右 - 對於256MB的空間,
一個int,32位,4個位元組。256=2^28 = 67,108,864個in
也就是6*10^7的資料,如果是long long,那麼少一半就可以了。
相關文章
- PHP 演算法基礎----時間複雜度和空間複雜度(轉載)PHP演算法時間複雜度
- 演算法分析__時間複雜度演算法時間複雜度
- dfs時間複雜度分析時間複雜度
- 演算法的時間複雜度演算法時間複雜度
- 資料結構基礎學習之時間複雜度分析資料結構時間複雜度
- 122 演算法的時間複雜度和空間複雜度詳解演算法時間複雜度
- 時間與空間複雜度分析複雜度
- 常用的時間複雜度分析方法時間複雜度
- 演算法分析__時間複雜度的五個記號演算法時間複雜度
- 時間複雜度跟空間複雜度時間複雜度
- 時間複雜度與空間複雜度時間複雜度
- 時間複雜度和空間複雜度時間複雜度
- 演算法(一)時間複雜度演算法時間複雜度
- 卷演算法——時間複雜度演算法時間複雜度
- 解惑3:時間頻度,演算法時間複雜度演算法時間複雜度
- 簡單程式的時間複雜度分析時間複雜度
- 遞迴演算法的時間複雜度遞迴演算法時間複雜度
- 氣泡排序時間複雜度分析排序時間複雜度
- Redis基礎、常用型別介紹、時間複雜度Redis型別時間複雜度
- JavaScript 演算法之最好、最壞時間複雜度分析JavaScript演算法時間複雜度
- 時間複雜度O(n)和空間複雜度時間複雜度
- 排序演算法:堆排序的實現和時間複雜度分析排序演算法時間複雜度
- 時間複雜度怎麼算?如何計算時間複雜度?時間複雜度
- 演算法的複雜度分析演算法複雜度
- 衡量演算法的效能-時空複雜度分析演算法複雜度
- 說說你對演算法中時間複雜度,空間複雜度的理解?如何計算?演算法時間複雜度
- 演算法的空間複雜度演算法複雜度
- 時間複雜度為 O(nlogn) 的排序演算法時間複雜度排序演算法
- 時間複雜度為O(nlogn)的排序演算法時間複雜度排序演算法
- 演算法複雜度分析演算法複雜度
- 時間複雜度的計算時間複雜度
- 一文講透演算法中的時間複雜度和空間複雜度計算方式演算法時間複雜度
- 我們常說的演算法時間複雜度和空間複雜度到底是什麼?演算法時間複雜度
- 圖解時間複雜度圖解時間複雜度
- 淺談時間複雜度時間複雜度
- 時間複雜度(詳解)時間複雜度
- 時間複雜度為 O (n^2) 的排序演算法時間複雜度排序演算法
- 時間複雜度為 O(n^2) 的排序演算法時間複雜度排序演算法