簡單程式的時間複雜度分析
一、演算法的概念
演算法中基本操作的執行次數一般是與問題的規模有關的。對於節點個數為n的資料處理問題,用T(n)表示演算法基本操作的執行次數。為評價演算法的時間複雜度與空間複雜度,我們引入記號為“O”的數學符號。設T(n)和f(n)是定義在正整數集合上的兩個函式,如果存在正常數C和No,使得當n>=No時,都有0 常見演算法時間複雜度排序為:
**Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)
演算法時間複雜度的最小、最大和平均值:
- 演算法在最好的情況下的時間複雜度是指演算法計算量的最小值。
- 演算法在最壞的情況下的時間複雜度是指演算法計算量的最大值。
- 演算法在平均情況下的時間複雜度是指演算法在所可能的情況下的計算量經過加權計算出的平均值。
二、常用程式的簡單的時間複雜度分析
**首先我們將每次執行一行程式的時間複雜度記為O(1)。
時間複雜度分析的基本策略是:從內向外分析,從最深層開始分析。如果遇到函式呼叫,要深入函式進行分析。
1、對於一個迴圈,假設迴圈體的時間複雜度為 O(n),迴圈次數為 m,則這個
迴圈的時間複雜度為 O(n×m)。
void aFunc(int n) {
for(int i = 0; i
所以上述程式的時間複雜度為O(n×1),為O(n)。由此延伸,多重迴圈的時間複雜度可以內外層迴圈相乘獲得
void aFunc(int n) {
for(int i = 0; i
所以上述程式的時間複雜度為O(n × n × 1)=O(n^2)。
2.對於順序執行的程式語句,時間複雜度可用疊加計算
void aFunc(int n) {
for(int i = 0; i
所以時間複雜度的計算為O(n^2)+O(n),由於只考慮量級的關係,所以該程式碼塊的時間複雜度為O(n^2)。
3.對於條件判斷語句,總的時間複雜度等於其中 時間複雜度最大的路徑 的時間複雜度。
void aFunc(int n) {
if (n >= 0) {
// 第一條路徑時間複雜度為 O(n^2)
for(int i = 0; i
此時的時間複雜度為O(n^2)。
練習1
void aFunc(int n) {
for (int i = 2; i
需要滿足i*2 練習 顯然執行次數,T(0) = T(1) = 1,同時 T(n) = T(n - 1) + T(n - 2) + 1,這裡的 1 是其中的加法算一次執行。
long aFunc(int n) {
if (n
顯然 T(n) = T(n - 1) + T(n - 2) 是一個斐波那契數列,透過歸納證明法可以證明,當 n >= 1 時 T(n) 4 時 T(n) >= (3/2)^n。
所以該方法的時間複雜度可以表示為 O((5/3)^n),簡化後為 O(2^n)。
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1727/viewspace-2808099/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- dfs時間複雜度分析時間複雜度
- 時間與空間複雜度分析複雜度
- 常用的時間複雜度分析方法時間複雜度
- 時間複雜度跟空間複雜度時間複雜度
- 時間複雜度和空間複雜度時間複雜度
- 時間複雜度與空間複雜度時間複雜度
- 演算法分析__時間複雜度演算法時間複雜度
- 氣泡排序時間複雜度分析排序時間複雜度
- 時間複雜度O(n)和空間複雜度時間複雜度
- 時間複雜度和空間複雜度 順序時間複雜度
- 時間複雜度怎麼算?如何計算時間複雜度?時間複雜度
- 關於計算時間複雜度和空間複雜度時間複雜度
- 【資料結構】-時間複雜度和空間複雜度資料結構時間複雜度
- 【基礎】演算法的時間複雜度分析演算法時間複雜度
- 時間複雜度的計算時間複雜度
- 圖解時間複雜度圖解時間複雜度
- 時間複雜度(詳解)時間複雜度
- 淺談時間複雜度時間複雜度
- PHP陣列函式的時間複雜度清單PHP陣列函式時間複雜度
- 那些年忽略的知識:時間複雜度和空間複雜度詳解時間複雜度
- 演算法的時間複雜度演算法時間複雜度
- 122 演算法的時間複雜度和空間複雜度詳解演算法時間複雜度
- 演算法分析__時間複雜度的五個記號演算法時間複雜度
- 解惑3:時間頻度,演算法時間複雜度演算法時間複雜度
- 藍橋杯-數三角(ac程式碼時間複雜度分析)C程式時間複雜度
- 冰與火之歌:「時間」與「空間」複雜度複雜度
- PHP 演算法基礎----時間複雜度和空間複雜度(轉載)PHP演算法時間複雜度
- 易被忽略的知識點之 ---- 各種時間複雜度和空間複雜度時間複雜度
- 複雜度分析複雜度
- 複雜度分析的套路及常見的複雜度複雜度
- 演算法(一)時間複雜度演算法時間複雜度
- 卷演算法——時間複雜度演算法時間複雜度
- 資料結構~時間複雜度資料結構時間複雜度
- 資料結構:時間複雜度資料結構時間複雜度
- JavaScript 演算法之最好、最壞時間複雜度分析JavaScript演算法時間複雜度
- 遞迴演算法的時間複雜度遞迴演算法時間複雜度
- 特別容易理解的時間複雜度文章時間複雜度
- 用程式碼複雜度分析風險複雜度