20172315 2018-2019-1 《程序設計與數據結構》第一周學習總結
阿新 • • 發佈:2018-09-09
之間 https 加法 任務 工程 規則 位置 href for
20172315 2018-2019-1 《程序設計與數據結構》第一周學習總結
教材學習內容總結
第一章
- 正確性:軟件遵守其特定要求的程度。
- 可靠性:軟件故障的頻率和重要性。
- 健壯性:很好地處理錯誤情況的程度。
- 可用性:用戶可以輕松地在軟件中學習和執行任務。
- 可維護性:可以輕松地對軟件進行更改。
- 可重用性:在開發其他軟件系統時可以輕松地重用軟件組件。
- 可移植性:軟件組件可以輕松地在多個計算機環境中使用。
- 運行效率:軟件在不浪費資源的情況下實現其目的的程度。
數據結構
程序=數據結構+算法,軟件=程序+軟件工程
數據結構:計算機存儲、組織數據的方式。第二章
- 算法效率
算法效率通常用CPU的使用時間表示,算法分析是從效率的角度對算法進行分類 - 增長函數
我們希望最優化的值:時間復雜度-CPU的使用時間,空間復雜度-內存空間,
通常關註的比較多是CPU的使用時間
增長函數表示問題大小(n)與希望優化的值之間的關系。 - 大O記法:常用大O表示法表示時間復雜性,註意它是某一個算法的時間復雜性。
時間復雜度的計算規則:加法準則,乘法準則,特例情形
教材學習中的問題和解決過程
- 問題1:不懂書上P6上的散列表(hash table)是什麽意思
- 問題1解決方案:查詢資料得知:哈希表(Hash table,也叫散列表),是根據關鍵碼值(Key value)而直接進行訪問的數據結構。也就是說,它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度。這個映射函數叫做散列函數,存放記錄的數組叫做散列表。資料
- 問題2:空間復雜度與時間復雜度的區別
問題2解決方案:時間復雜度是同一問題可用不同算法解決,而一個算法的質量優劣將影響到算法乃至程序的效率。空間復雜度(Space Complexity)是對一個算法在運行過程中臨時占用存儲空間大小的量度,記做S(n)=O(f(n))。參考資料
課後習題
- EX2.1 下列增長函數的階次是多少?
a.10n^2+100n+1000
n的平方
b.10n^3-7
n的立方
c.2^n+100n^3
2的n次方
d.n^2 ·log(n)
n方乘以log(n) - EX2.4 請確定下面代碼段的增長函數和階次
for(int count = 0 ; count < n ; count++) for(int count2 = 0 ; count2 < n ; count2 = count2 + 2) { System.out.println(count,count2); } }
該循環外層循環n次,內層循環n/2次,由乘法準測可得增長函數為:F(n)=(n^2)/2,即階次是O(n^2)。
- EX 2.5 請確定下面代碼段的增長函數和階次
for(int count = 0 ; count < n ; count++)
for(int count2 = 1 ; count2 < n ; count2 = count2 * 2)
{
System.out.println(count,count2);
}
}
該循環外層循環n次,內層循環log2 n(2^x = n,x=log2 n),所以增長函數是nlog2n,階次是O(nlog2n)。
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一周 | 0/0 | 1/1 | 10/10 |
參考資料
資料
參考資料
20172315 2018-2019-1 《程序設計與數據結構》第一周學習總結