a. 增加函數:表示問題(n)大小與咱們但願最優化的值之間的關係(該函數表示了該算法的時間或空間複雜度)html
b. 大O記法:算法
c. 算法效率:一般用CPU的使用時間表示數據結構
d. 更快的CPU並不能影響主項,只會給增加函數增長常量(因而可知,須要重視算法分析)函數
e. 時間複雜度分析學習
【參考資料】百度知道測試
a. 10n^2+100n+1000 (找主項,忽略次項與常量:O(n^2))優化
b. 10n^3-7 (同上,O(n^3))code
c. 2^n+100n^3 (隨着n的增大,指數爆炸,O (2^n) )htm
d. n^2 ·log(n) (O(n^2 ·log(n)))blog
for(int count = 0 ; count < n ; count++) for(int count2 = 0 ; count2 < n ; count2 = count2 + 2) { System.out.println(count,count2); } }
這是一個嵌套循環的複雜度分析。內層循環每次都增長2,故循環了n/2次,外層循環了次,根據乘法準則,增加函數爲 (n/2)*n = n^2/2,則階次爲O(n^2)
for(int count = 0 ; count < n ; count++) for(int count2 = 1 ; count2 < n ; count2 = count2 * 2) { System.out.println(count,count2); } }
這是一個嵌套循環的複雜度分析。內層循環每次變爲前一次的2倍,則有2^x = n,即內層循環的次數x = (以2爲底n的對數 - 1)次;外層循環了n次,根據乘法準則,增加函數爲n(log(2)n-1),忽略掉次項,則階次爲O(O(nlog2n))(2是對數的底)
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 0/0 | 1/1 | 4/4 |