在這學期就已經大二了,也已經步入了學習專業課的核心時間,在這個階段,咱們應該瞭解本身的學習狀況,針對本身的學習能力制定不一樣的計劃,獲得對於自我能力的提高。讓咱們開啓新的一學期吧!php
1、軟件開發
1.軟件工程:是一門關於高質量軟件開發的技術和理論的學科。
2.解決的問題:控制開發過程,實現高質量的軟件。
3.軟件工程的目標:(1)解決正確性問題;(2)按時在預算以內給出解決方案;(3)給出高質量的解決方案;(4)以合情合理的方式完成上面事情。
4.軟件質量的特徵:(1)正確性(2)可靠性(3)健壯性(4)可用性(5)可維護性(6)可重複性(7)可移植性(8)運行效率html
2、數據結構
1.程序=數據結構+算法;
小故事:Pascal之父——Nicklaus Wirth經過這一句話得到了圖靈獎!
2.軟件=程序+軟件工程;
3.數據結構:計算機存儲、組織數據的方式。java
1、算法效率分析
1.算法效率一般用CPU的使用時間表示;
2.算法分析是從效率的角度對算法進行分類;
3.增加函數表示與該問題大小相對應時間或空間的使用;
4.增加函數:(1)咱們但願最優化的值;(2)一般關注的比較可能是CPU的使用時間;(3)增加函數表示問題大小(n)與但願優化的值之間的關係。web
2、大O記法
1.增加函數表示了該算法的時間複雜度或空間複雜度。
2.漸進複雜度稱爲算法的階次。
注:算法
3、增加函數的比較
1.更快的處理器,並不能影響主項,只會給增加函數增長常量,仍須要重視算法分析。
2例:
注:其中裏面3.1六、2.1五、3.3的算法爲,√10≈3.16227766016837九、³√10≈2.154四、log2(10)=lg(10)/lg(2)=1/lg(2)=3.321928
3.n相對較小時,各類增加函數的比較
數據結構
n很大時,各類增加函數的比較
函數
4、時間複雜度分析(重點)
1.要分析循環運行,首先要肯定該循環體的階次n,而後用該循環須要運行的次數乘它。
例:時間複雜度爲O(n)的例子學習
for(int count = 0;count<n;count++) { //*複雜度爲O(1)的步驟系列 }
例:若是循環的複雜程度是對數級的(時間複雜度爲O(log n)優化
count = 1; while(count < n) { count *=2; //複雜度爲O(1)的步驟系列 }
2.嵌套循環的複雜度分析
例:時間複雜度爲O(n^2)spa
for(int count = 0;count < n;count++) { for(int count2 = 0;count2<n;count2++) { //複雜度爲O(1)的步驟系列 } }
3.方法調用的複雜度分析
例:時間複雜度爲O(n^2)
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); }
5、時間複雜度的計算規律(重點)
設程序段和程序段2的時間分別爲T1(n)和T2(n),總的運行時間爲T(n)
1.加法準則:T(n,m)=T1(n)+T2(n)
2.乘法準則:T(n)=T1(n)*T2(n)
3.特例情形:算法平均時間複雜度,算法最壞狀況下的時間複雜度。
for(int count = 0;count<n;count++) { { for(j=1;j<=count;j++) { printsum(count); } } } public void printsum(int count) { int a=0; while(a^2<=count) a++; }
問題1解決過程:
以書本里的解答,我認爲是能夠這樣認爲的,由於它自己就是一個計算機問題演變出的數學問題,時間複雜度也就是循環的次數,一樣,次數多計算法就是經過一系列計算所獲得的,而問題中的計算只是一種對於對計算機問題的一種解釋的手段,因此我以爲徹底能夠這樣理解。
問題2解答:
通過查找資料,我找到這樣一篇文章,能夠有助於咱們理解數據結構在這一方面的知識,資料叫作「劍指Offer——算法複雜度中的O(logN)底數是多少」,具體文章我已放在參考資料中,有興趣的同窗能夠看看,我這裏拿重點。
EX 2.1 下列增加函數的階次是多少?
a.10n^2+100n+1000
解答:由於漸進複雜度稱爲算法的階次,所以該增加函數的階次爲:O(n^2)。
b.10n^3-7
解答:由於n^3的增加速度最快,因此階次爲:O(n^3)
c.2^n+100n^3
解答:由於n^3比2^n增加速度慢,因此階次爲:O(2^n)
注:
d.n^2 ·log(n)
解答:階次:O(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); } }
解答:
EX 2.5 請肯定下面代碼段的增加函數和階次
for(int count = 0 ; count < n ; count++) for(int count2 = 0 ; count2 < n ; count2 = count2 * 2) { System.out.println(count,count2); } }
解答:
代碼調試中的問題和解決過程, 一個問題加1分
呀,新學期又到啦,咱們又要學習啦,好開心呀哈哈哈。雖然感受聽起來有點假,的確,有點假,可是開學仍是很開心的,能夠和同窗們一塊兒玩,很開心的玩啊!而後又能夠好好學習了,在家裏感受每天都在打遊戲,不想學習,但願本身在新的一學期能夠繼續努力,認真學習,沒有晚自習,本身要給本身晚自習的時間進行學習,但願本身能夠學到更多有用的東西讓本身之後的生活更好,養得起本身!
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | |
---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 |
第一週 | 0/0 | 1/1 | 6/6 |
藍墨雲班課
Java程序設計
算法運行時間一、logN、N、NlogN 、N^二、N^三、2^n之間的比較
劍指Offer——算法複雜度中的O(logN)底數是多少