1. 程式人生 > >20172315 2018-2019-1 《程序設計與數據結構》第一周學習總結

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

之間 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 《程序設計與數據結構》第一周學習總結