1.1軟件質量html
軟件質量:分爲多個方面:正確性、可靠性、健壯性、可用性、可維護性、可重用性、可移植性、運行效率
算法
1.2數據結構網絡
數據結構:是計算機存儲、組織數據的方式。爲了適應軟件的功能,提升軟件質量,要合理地使用不一樣的數據結構。數據結構
2.1算法效率分析函數
算法分析:是計算機科學的基礎。個人理解是:這是把用人腦解決的問題轉換爲能夠讓計算機能夠「看懂」的算法學習
2.2增加函數與大O記法優化
- 問題大小:問題的大小根據問題的具體狀況以及所涉及的變化量而不一樣表達爲n
- 增加函數:問題大小與咱們但願最優化值之間的關係,表示算法的時(空)間複雜度
- 漸進複雜度:n增長時增加函數的通常性質。又稱爲算法的階次,階次的表示:階次爲n時,記爲「O(n)」
2.3增加函數的比較設計
處理器速度和存儲器速度不能彌補算法效率的差別。對於複雜度越低的算法,處理器提速的效果越顯著。3d
2.4時間複雜度分析code
- 循環運行的複雜度分析
例如:
System.out.print("1 "); for (int count = 0; count < n; count ++) { System.out.print("+ 1 "); } System.out.print("= " + n)
其複雜度爲O(n)
- 嵌套循環的複雜度分析
將每一層的階次相乘。兩層嵌套都爲O(n)時,整體的複雜度爲O(n²)- 方法調用的複雜度分析
分析方法與嵌套循環的複雜度分析大致相同,
該圖表中各項數值的得出過程。
算法A爲1 : 1,較容易得出。
算法B爲10 : 3.16,數值的關係爲:3.16是10的開平方。
算法C爲10 : 2.15,數值的關係爲:2.15是10的開立方。
算法D爲10x : x+3.3,3.3就是log₂10(此處忘記對數的計算法則的相關知識,在網絡查找時回憶起來)
下列增加函數的階次是多少?
a.10n²+100n+1000
n²
b.10n³-7
n³
c.2^n+100n³
2^n
d.n² ·log n
n²·log n
for(int count = 0 ; count < n ; count++) for(int count2 = 0 ; count2 < n ; count2 = count2 + 2) { System.out.println(count,count2); } }
增加函數:t(n) = ½n²(外層循環:n次,內部循環:½n次,相乘)
階次:n²
for(int count = 0 ; count < n ; count++) for(int count2 = 1 ; count2 < n ; count2 = count2 * 2) { System.out.println(count,count2); } }
增加函數:n = 1 時,t(n) = 0;
n > 1 時,t(n) = n·log₂(n - 1)。(外層:n次,內層:log₂(n - 1)次,相乘)
階次:n·log₂n
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 0/0 | 1/1 | 6 |