20172306 2018-2019 《Java程式設計與資料結構》第一周學習總結

來源:互聯網
上載者:User

標籤:步驟   瞭解   軟體   system   複雜度   工程   ext   一周   隊列   

20172306 2018-2019 《Java程式設計與資料結構(下)》第一周學習總結教材學習內容總結第一章 概述

(程式=資料結構+演算法 軟體=程式+軟體工程)

  • 1.1 軟體品質
    • 軟體工程師一門關於高品質軟體開發的技術和理論的學科
    • 軟體工程的目標:1.解決正確性問題 2.按時且在預算之內給出解決方案 3.給出高品質的解決方案 4.以合情合理的方式完成上面的事情
    • 高品質軟體的特徵
  • 正確性:我認為是我們所做的都是為瞭解決一個正確性問題。
  • 可靠性:降低軟體的故障程度和機率
  • 健壯性:可以很好地解決出現異常的情況
  • 可用性:保證該軟體可以很好地使用
  • 可維護性:對於軟體,是一個長期使用和改進的過程,因此,一個好的軟體需要有維護性,可以持續的維護和發展
  • 可重用性:我認為是創造的軟體可以用在另一種軟體上,提高了效率也提高了利用率
  • 可移植性:就是一款軟體可以在很多不同的環境中同樣適用
  • 運行效率:一個好的軟體的運行效率也是條件之一。

  • 1.2 資料結構
    • 軟體開發的目的是構建軟體,而不僅僅是編寫代碼。
    • 棧可用於顛倒資料集的順序;隊列可以保持其資料的順序
  • 自測題
    • 可靠性關注的是發生故障的頻率和環境;健壯性關注的是出現故障會發生什麼
    • 結構良好、設計良好以及文檔說明良好的軟體更容易維護
第二章 演算法分析

(演算法分析是電腦科學的基礎)

  • 2.1 演算法效率分析
    • 為完成某一特定任務所使用的演算法的效率,是決定一個程式運行速度的主要因素
  • 2.2 增大函數與大O記法
    • 增長函數表示了該演算法的時間複雜度或空間複雜度
    • 我們主要討論演算法的漸進複雜度,漸進複雜度稱為演算法的階次(忽略該演算法的增長函數中的常量和其他次要項,只保留主項而得出的)
    • 演算法的階次為增長函數提供了一個上界
    • 所有具有相同階次的演算法,從運行效率的角度來說都認為是等價的
  • 2.3 增長函數的比較
    • 尋求一個更高效的演算法是一種比使用更快處理器的更好解決方案
    • 增長函數的比較

  • 2.4 時間複雜度分析
    • 1.迴圈運行複雜度
    • (1)迴圈體複雜為O(1),需要迴圈n次,則時間複雜度為O(n).
    for(int count = 0;count<n;count++)  {  //*複雜度為O(1)的步驟系列    }
    • (2)其實我自己認為這種情況時,一般我會動手計算一下,雖然速度慢,但是卻可以更好的理解。則時間複雜度為O(logn).
    count = 1; while(count < n) { count *=2; //複雜度為O(1)的步驟系列 }
    • 2.嵌套迴圈複雜度
    • 對於迴圈體中的複雜度也需要考慮時,要將內層和外層都考慮好。該複雜度為O(n2)。
    • for(int count = 0;count < n;count++){for(int count2 = 0;count2<n;count2++) {     //複雜度為O(1)的步驟系列 }}
    • 3.方法調用複雜度

    • 自己總結一下就是:我們在迴圈體中可能會引用一個方法,這個方法的複雜度是不確定的,但是同樣的目的,它的複雜度是可能不同,所以具體還是要根據方法體的複雜度。

  • 自測題
    • 隨著問題的增大,演算法的複雜度將不斷接近該漸進複雜度
    • 隨著演算法複雜度的增長,處理器素的的提高對複雜度的影響越來越小
教材布置問題解答
  • EX2.1 下列增長函數的階次是多少?
  • a.10n^2+100n+1000
    解:階次就是漸進複雜度,對於該三項來說,第一項增長速度最快,主項是n^2,所以階次就是n^2.
  • b.10n^3-7
    解: 10n^3的增長速度最快,因此階次為n^3
  • c. 2^n+100n^3
    解:就這兩項而言,我們可以看前面的增長函數的比較,可以發現n^3增長速度快,所以階次為n^3.
  • d. n^2logn
    解:階次為n^2logn.

  • EX2.4請確定下面程式碼片段的增長函數和階次
for(int count = 0 ; count < n ; count++)    for(int count2 = 0 ; count2 < n ; count2 = count2 + 2)        {            System.out.println(count,count2);        }}

解:增長函數是n^2/2;階次是n^2. 因為先看裡面的,會發現內迴圈要進行n/2次,外迴圈要進行n次,根據之前學的,將內外相乘,則為n^2/2。

  • EX2.5請確定下面程式碼片段的增長函數和階次
for(int count = 0 ; count < n ; count++)    for(int count2 = 0 ; count2 < n ; count2 = count2 * 2)        {            System.out.println(count,count2);        }}

解:增長函數是nlogn,階次為nlogn. 因為,可以先列出幾個,會發現內層迴圈次數為logn,而外層是n次,內外相乘為nlogn .

結對及互評點評模板:
  • 部落格中值得學習的或問題:
    • xxx
    • xxx
點評過的同學部落格和代碼
  • 本周結對學習情況
    • 20172325
    • 結對學習內容
      • 一起看了第一二章的內容
      • 一起完成的課後布置的習題
其他(感悟、思考等,可選)
 新學期開始了,又要和Java這門課鬥智鬥勇了!上學期這門課學的不咋地,這學期不知道能夠學成什麼樣。假期說起部落格的事情,我說我不愛寫部落格,我爸說,你都看書了為什麼你就不好好把部落格寫的好點呢?我一想,有點道理,所以呢,剛開學,還是要對自己有信心的,爭取這學期能保持好好寫部落格,學好這門課!!!
學習進度條
程式碼數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 0/0 1/1 6/6
參考資料
  • Java結構設計與資料結構(第四版)

20172306 2018-2019 《Java程式設計與資料結構》第一周學習總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.