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

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

教材學習內容總結

  • 軟件質量的特徵
    html

  • 可靠的軟件不多發生故障,即便發生了故障,也能夠將該故障的影響降到最低。
  • 軟件系統必須通過精心設計、編碼和文檔說明,以便爲開發人員、維護人員和用戶提供支持。
  • 軟件必須有效使用諸如CPU時間和內存之類的資源。
  • 質量特徵必須優先考慮,並儘量地最大化。
  • 棧可用於顛倒數據集的順序。
  • 隊列能夠保持其數掘的順序。
  • 軟件質量的特徵之一是資源的使用效率。CPU的使用時間是最重要的資源之一。爲完成某一特定任務所使用的算法的效率,是決定一個程序運行速度的主要因素。
  • 增加函數表示與該問題大小相對應的時間或空間的使用。
  • 若是算法的運算效率低,那麼從長遠來講,使用更快的處理器也無濟於事。
  • 循環的時間複雜度等於循環體的複雜度乘以該循環運行的次數。
  • 分析嵌套循環的複雜度時,必須將內層循環和外層循環都考慮進來。算法

教材學習中的問題和解決過程

  • 問題1:求解算法的時間複雜度的具體步驟
  • 問題1解決方案:

⑴ 找出算法中的基本語句;數據結構

算法中執行次數最多的那條語句就是基本語句,一般是最內層循環的循環體。函數

⑵ 計算基本語句的執行次數的數量級;性能

只需計算基本語句執行次數的數量級,這就意味着只要保證基本語句執行次數的函數中的最高次冪正確便可,能夠忽略全部低次冪和最高次冪的係數。這樣可以簡化算法分析,而且使注意力集中在最重要的一點上:增加率。學習

⑶ 用大Ο記號表示算法的時間性能。編碼

將基本語句執行次數的數量級放入大Ο記號中。.net

練習題

  • EX2.1

    a. 10n^2+100n+1000 O(n^2)設計

    b. 10·n^3-7 O(n^3)code

    c. 2^n+100· n^3 O(2^n)

    d. n^2 ·log(n) O(n^2 · logn)

  • 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次,因此增加函數爲t(n)=(n^2)/2,階次是O(n^2)

  • EX2.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)次,增加函數爲t(n)=nlog2(n),階次是O(nlog2n)

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20172312
    • 結對學習內容
      • 課本第1、二章

學習進度條

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

參考資料

相關文章
相關標籤/搜索