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

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

教材學習內容總結

  • 第一章 概述
    • 軟件工程是一門關於高質量軟件開發的技術和理論的學科。
    • 軟件開發解決的問題爲控制開發過程,實現高質量的軟件。
      • 軟件必須有效使用諸如CPU時間和內存之類的資源。
      • 質量特徵必須優先考慮,並可能最大化。

  • 數據結構:是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關係的數據元素的集合。一般狀況下,精心選擇的數據結構能夠帶來更高的運行或者存儲效率。數據結構每每同高效的檢索算法和索引技術有關。
    • 棧可用於顛倒數據集的順序。
    • 隊列可用於保持其數據的順序。

  程序=數據結構+算法
  軟件=程序+軟件工程html

  • 第二章 算法分析算法

    • 算法效率一般用CPU使用時間來表示,算法分析是從效率的角度對算法進行分析,是計算機科學的基礎。
    • 增加函數表示與該問題大小相對應的時間或空間的使用。增加函數表示問題大小與咱們但願最優化的值之間的關係。該函數表示了該算法的時間複雜度或空間複雜度。若是算法的運行效率低。那麼從長遠來講,使用更快的處理器也無濟於事。
    • 要分析算法的複雜度,一般須要分析循環的運行。循環的時間複雜度等於循環體的複雜度乘以該循環運行的次數。額分析嵌套循環的複雜度時,必須將內層循環和外層循環都考慮進來。
    • 大O計法:忽略該算法的增加函數中的常量和其餘次要項,只保留主項而得出的。
    • 一些增加函數及其漸進複雜度

  • 增加函數的比較

  • 當n增長時,各種增加函數差距也會拉大。

  • 規律及總結

教材中的問題及解決過程

  • 問題一:可移植性是軟件的質量特徵之一,那麼Java程序設計語言是如何解決該質量特徵的?
  • 解決:Java程序設計語言是這樣來結局這個問題的:把Java的源代碼編譯成了字節碼,這是一種低級語言,它不是任何特定CPU的機器語言。字節碼運行在Java虛擬機上。Java虛擬機是一種解釋並執行字節碼的軟件。所以,至少從理論上講,任何具備Java虛擬機的系統都能運行Java程序。
  • 問題二:在看書的時候,不是很理解對相關的工做量,爲何說提升CPU的速度並不必定能提升處理速度。
  • 解決:當算法的階次爲常量(即O(1))或線性階次(即O(n))時,提升CPU速度纔會線性提升處理速度。隨着算法複雜度的增加,處理器速度的提升對複雜度的影響愈來愈小。

練習題

  • EX 2.1
    • 下列增加函數的階次是多少?
    • 10n^2+100n+1000
    • O(n^2)
    • 10n^3-7
    • O(n^3)
    • 2^n+100n^3
    • 2^n
    • n^2logn
    • O(n^2logn)
  • EX 2.4
    • 請肯定下面代碼段的增加函數和階次數據結構

      for(int count = 0; count < n; count ++)
      for(int count2 = 0; count2 < n; count2 = count2 + 2)
      {
      System.out.println(count , count2)app

    • 內層循環是n/2,外層循環是n,因此爲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);
      }
      }學習

    • 內層循環是log2n,外層循環是n,因此爲O(nlog2n)。優化

結對及互評

  • 博客中值得學習的或問題:
    • 排版精美,對於問題研究得很細緻,解答也很周全。
  • 代碼中值得學習的或問題:
    • 代碼寫的很規範,思路很清晰,繼續加油!

點評過的同窗博客和代碼

  • 本週結對學習狀況

其餘(感悟、思考等,可選)

  在家癱了一個多月後,終於又回到學校了(笑)。在上個學期有收穫,有感慨,有付出,也有回報。暑假裏沒有了在學校學習的氛圍,天然也是懈怠了很多,能力感受到確實有所降低。雖然說在暑期內作了一個小app,但練習量是遠遠不夠的,代碼仍是必需要多敲才能熟練運用並掌握。至於博客,顯然在暑假內是沒有寫過的,如今開學,這個習慣仍然要撿起來,堅持下去。在這個學期裏要繼續努力,更好的提高本身!設計

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
第一週 200/200 1/2 5/20
  • 計劃學習時間:10小時htm

  • 實際學習時間:5小時blog

參考資料

相關文章
相關標籤/搜索