軟件工程的目標:正確性、可靠性、健壯性、可用性、可維護性、可重用性、可移植性、運行效率。
對於可靠性和健壯性這兩個較難區分的特徵個人理解是:可靠性能夠看作一我的容易不容易生病,健壯性能夠當作一我的生病後恢復的難易程度,是身體強壯康復快仍是落下病根罒ω罒html
經常使用的數據結構好比棧(先入後出)和隊列(先入先出)算法
n相對較小時各類增加函數的比較
數據結構
n很大時,各類增加函數的比較
函數
for(int count=0;count<n;count++) { /*複雜度爲O(1)的步驟系列*/ }
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=0; i<count; i++) sum += i; System.out.println(sum); }
public void sample (int n) { printsum(n); //該方法調用複雜度爲O(1) for(int count =0;count<n;count++) //該循環複雜度爲O(n) printsum(count); for(int count =0;count<n;count++) //該循環複雜度爲O(n^2) for(int count2 =0;count2<n;count2++) System.out.println(count,count2); }
EX2.1求階次學習
a.10n^2+100n+1000優化
解:階次是n^2。式子中漸進複雜度最高的是n^2,它的增加速度最快。3d
b.10n^3-7code
解:增加速度最快的是n^3htm
c. 2^n+100n^3blog
解:2^n的增加速度大於n^3,因此階次是2^n
d. n^2logn
解:因爲是相乘,因此爲原式n^2lognEX2.4
for(int count = 0 ; count < n ; count++) for(int count2 = 0 ; count2 < n ; count2 = count2 + 2) { System.out.println(count,count2); } }
解:外層循環進行次數爲n,內層循環爲1/2n,因此增加函數f(n)=n* 1/2n=1/2n^2;階次爲n^2
EX2.5
for(int count = 0 ; count < n ; count++) for(int count2 = 1 ; count2 < n ; count2 = count2 * 2) { System.out.println(count,count2); } }
解:外層循環須要進行次數爲n,內層循環須要進行次數爲爲x,則2^x=n,x=log2(n),因此增加函數是f(n)=nlog2(n),而階數與增加函數的最高階項有關,要忽略次項與常數項,階次是nlog2(n).
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | |
---|---|---|---|
積累 | 0/7359 | 3/17 | 30/330 |
第一週 | 0/0 | 1/1 | 8/8 |
有一段時間沒有學習了,假期有點點懈怠,忽然學習兩章內容,看了好久,感受還沒進入狀態比較生疏,有些概念較難分清,新的一學期仍需繼續努力,多多聯繫,對課本的理解要到位,加油吧!