軟件工程的目標
php
高質量軟件的特徵
html
漸進複雜度(asymptotic complexity)稱爲算法的階次,隨着問題大小的增長時增加函數的通常性質,這一性質取決於該表達式的主項,即n增長時表達式中增加最快的那一項。算法的階次是忽略該算法的增加函數中的常量和其餘次要項,只保留主項而得出的。算法的階次爲增加函數提供了一個上界。web
第二個洗盤子算法具備階次爲n^2^的時間複雜度,記爲O(n^2)。第一個洗盤子的事例,其增加函數爲t(n)=60n,其階次爲n,記爲O(n)。算法
for (int count = 0; count < n; count++) { // 複雜度爲O(1)的步驟系列 }
==eg2==若是該循環的複雜度是對數級的,則該循環是O(logn)數據結構
count = 1; while(count < n) { count *=2; //複雜度爲O(1)的步驟系列 }
for(int count = 0;count < n;count++) { for(int count2 = 0;count2<n;count2++) { //複雜度爲O(1)的步驟系列 } }
for(int count = 0;count<n;count++) { printsum(count); } public void printsum(int count) { int sum = 0; for(int I = 1;I<count;I++) sum += I; System.out.println(sum); }
2) 乘法規則
T(n,m) = T1(n) * T2(m) = O (f(n) * g(m))函數
3) 一個特例(問題規模爲常量的時間複雜度)
在大O表示法裏面有一個特例,若是T1(n) = O(c), c是一個與n無關的任意常數,T2(n) = O ( f(n) ) 則有T(n) = T1(n) * T2(n) = O ( c*f(n) ) = O( f(n) )。也就是說,在大O表示法中,任何非0正常數都屬於同一數量級,記爲O(1)。學習
EX 2.1:下列增加函數的階次是多少?
a.10n^2+100n+1000
解答:階次爲n^2
b.10n^3-7
解答:階次爲n^3
c.2^n+100n^3
解答:階次爲n^3
d.n^2 ·log(n)
解答:階次爲n^2 ·log(n)優化
EX 2.4:請肯定下面代碼段的增加函數和階次設計
for(int count = 0 ; count < n ; count++) for(int count2 = 0 ; count2 < n ; count2 = count2 + 2) { System.out.println(count,count2); } }
解答:內循環循環n/2次,外循環循環n次,故增加函數爲F(n)=(n^2)/2,階次爲n^2。調試
for(int count = 0 ; count < n ; count++) for(int count2 = 1 ; count2 < n ; count2 = count2 * 2) { System.out.println(count,count2); } }
解答:外層循環n次,內層循環log₂(n-1)次。故增加函數爲F(n)=nlog₂(n-1),階次爲nlog₂(n-1)。
上學期的Java課沒有打下堅實的基礎,但我仍是王老師課上說的,亡羊補牢,爲時不晚。但願這個學期可以有始有終,努力學好專業知識,學有所用。
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 0/0 | 1/1 | 8/8 |
基於評分標準,我給方藝雯的博客打分:4分。得分狀況以下:
正確使用Markdown語法(加1分)
模板中的要素齊全(加1分)
感想,體會不假大空的加1分
點評認真,能指出博客和代碼中的問題的加1分