20172315 2018-2019-1 《程序設計與數據結構》第一週學習總結

20172315 2018-2019-1 《程序設計與數據結構》第一週學習總結

教材學習內容總結

第一章

  • 正確性:軟件遵照其特定要求的程度。
  • 可靠性:軟件故障的頻率和重要性。
  • 健壯性:很好地處理錯誤狀況的程度。
  • 可用性:用戶能夠輕鬆地在軟件中學習和執行任務。
  • 可維護性:能夠輕鬆地對軟件進行更改。
  • 可重用性:在開發其餘軟件系統時能夠輕鬆地重用軟件組件。
  • 可移植性:軟件組件能夠輕鬆地在多個計算機環境中使用。
  • 運行效率:軟件在不浪費資源的狀況下實現其目的的程度。
  • 數據結構
    程序=數據結構+算法,軟件=程序+軟件工程
    數據結構:計算機存儲、組織數據的方式。html

    第二章

  • 算法效率
    算法效率一般用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)。函數

結對及互評

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20172318
    • 結對學習內容
      • 第一章
      • 第二章

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0/0 1/1 10/10

參考資料

相關文章
相關標籤/搜索