《資料結構的C++偽碼實現》(《DATA STRUCTURES A Pseudocode Approach with C++》)讀書筆記(三) (轉)
演算法(Algorithm efficency)
首先提出來演算法效率的學習是建立在迴圈上面的。(The study of algorithm efficency focuses on ls)
1,線形迴圈(linear loops)
先看一段程式碼:
1 i=1
2 loop (i <= 1000)
1 application code
2 i=i+2
3 end loop
顯然這個迴圈內部的語句會1000/2次,換句話說我們如果把1000換成n的話,這個迴圈次數為n/2,我們用
f(n)=n/2
來表示
2,對數迴圈(logarithmic loops)
先看一段程式碼:
1 i=1
2 loop (i <= 1000)
1 application code
2 i=i * 2
3 end loop
這裡我們把i=i+2改為了i=iX2,因此在執行時
multiply 2**iterations<1000
div 1000/2**iterations>=1
我們可以得出這個迴圈的次數是對數級的f(n)=┍log2(n)┑
3,巢狀迴圈(nested loops)
巢狀迴圈的執行次數為:iterations=outer iterations X inner iterations
例如:
1 i=1
2 loop(i<=10)
1 j=1
2 loop(j<=10)
1 application code
2 j=j*2
3 end loop
4 end loop
3 i=i+1
顯然這個演算法的效率就是10*┌log2(n)┐也就是f(n)=┍nlog2(n)┑,當然我們可以的到平方(quadratic)演算法,f(n)=n**2;
4,現在我們用Big-O法來表示這些演算法的效率
可以分為兩步:
a,把每一個效率公式的係數設為1
b,只留下最高次數的項
例如:
11n**2+7n //我們可以得到效率為:n**2記為O(n**2)
七種標準效率衡量資料由小到大為O(log2(n)),O(n),O(nlog2(n)),O(n**2),O(n**K),O(c**n),O(n!)
(to be continued)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-962689/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 《資料結構的C++偽碼實現》(《DATA STRUCTURES A Pseudocode Approach with C++》)讀書筆記(一) (轉)資料結構C++StructAPP筆記
- 《資料結構的C++偽碼實現》(《DATA STRUCTURES A Pseudocode Approach with C++》)讀書筆記(四) (轉)資料結構C++StructAPP筆記
- 資料結構與演算法讀書筆記 - 004 -C++遞迴資料結構演算法筆記C++遞迴
- Linux Data Structures(Linux資料結構)(轉)LinuxStruct資料結構
- 《Effective C++》第5章 實現-讀書筆記C++筆記
- C++讀書筆記:字串C++筆記字串
- 《Effective C++》讀書筆記C++筆記
- 資料結構——單連結串列的C++實現資料結構C++
- 資料結構 - 單連結串列 C++ 實現資料結構C++
- 【資料結構】實現單連結串列(c++)資料結構C++
- 【資料結構】順序棧的實現(c++)資料結構C++
- 【資料結構】實現順序表(c++)資料結構C++
- C++資料結構和pb資料結構的轉換C++資料結構
- 【資料結構】實現迴圈連結串列(c++)資料結構C++
- 【資料結構】順序佇列的實現(c++)資料結構佇列C++
- 【資料結構】迴圈佇列的實現(c++)資料結構佇列C++
- 《深度探索C++物件模型》讀書筆記C++物件模型筆記
- 《資料庫系統實現》讀書筆記資料庫筆記
- C++ 手撕--基本資料結構的簡單實現C++資料結構
- 資料結構學習(C++)——單連結串列(定義與實現) (轉)資料結構C++
- 資料結構學習(C++)——序言 (轉)資料結構C++
- 《Effective C++》第3章 資源管理(2)-讀書筆記C++筆記
- 《Effective C++》第3章 資源管理(1)-讀書筆記C++筆記
- 《高質量C++程式設計指南》讀書筆記(一) (轉)C++程式設計筆記
- 資料結構學習(C++)——圖(總結) (轉)資料結構C++
- 資料結構學習(C++)——樹(總結) (轉)資料結構C++
- 資料結構與演算法——B樹的C++實現資料結構演算法C++
- 資料結構與演算法分析 讀書筆記(樹)資料結構演算法筆記
- 《深度探索c++記憶體模型》讀書筆記 (二)C++記憶體模型筆記
- c++基本資料結構C++資料結構
- C++ 資料結構-堆C++資料結構
- 《從陷阱中學習C/C++》讀書筆記C++筆記
- 【讀書筆記】代理模式翻譯成C++了筆記模式C++
- 資料結構學習(C++)——棧和佇列(定義和實現) (轉)資料結構C++佇列
- C++筆記——C++基本思想與實現(一)C++筆記
- 資料結構與演算法——AVL樹類的C++實現資料結構演算法C++
- 《Python 簡明教程》讀書筆記系列四 —— 資料結構Python筆記資料結構
- 【資料結構】雙連結串列(c++)資料結構C++