20172321 《程序設計與數據結構》第一週學習總結

20172321 《程序設計與數據結構》第一週學習總結

教材學習內容總結

第一章 概述

1.1 軟件質量java

  • 軟件工程是一門關於高質量軟件開發的技術和理論的學科。
  • 高質量軟件的特徵

1.2 數據結構算法

  • 數據結構是計算機存儲、組織數據的方式。
  • 數據結構是指相互之間存在一種或多種特定關係的數據元素的集合。一般狀況下,精心選擇的數據結構能夠帶來更高的運行或者存儲效率。
  • 經常使用結構

第二章

2.1 算法效率分析數據結構

  • 算法效率一般用==CPU的使用時間==表示
  • 算法分析是從效率的角度對算法進行分類

2.2 增加函數與大O記法函數

  • 增加函數表示與該問題大小相對應的時間或者空間的使用。該函數表示了該算法的事件複雜度或空間複雜度。
  • 漸進複雜度稱爲算法的階次。主要關注隨着問題大小的增長時增加函數的通常性質,這一性質取決於該表達式的主項,即n增長時表達式中增加最快的那一項。
  • 大O記法

2.3 增加函數的比較學習

  • 處理器提速10倍後能處理的問題大小的增長倍速

  • n相對較小時

  • n很大時

2.4 時間複雜度分析.net

  • 循環的時間複雜度等於循環體的複雜度乘以該循環運行的次數
for (int count = 0; count < n; count++)
{
  // 複雜度爲O(1)的步驟系列
}
  • 分析嵌套循環的複雜度時,必須將內層循環和外層循環都考慮進來
for (int count = 0; count < n; count++)
    for (int count2 = 0; count2 < n; count2++)
    {
        //複雜度爲O(1)步驟系列
    }

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

問題:書上第15頁說,在算法複雜度中使用對數時,基本上是指以2爲底的對數,那麼特殊狀況通常出如今何時呢。
解答:其實我主要是想知道特殊狀況以後剩下的都是基本狀況了。設計

教材習題做答

  • EX2.1 下列增加函數的階次是多少?
    • a.10n^2+100n+1000
    • 解:O(n^2)
    • b.10n^3-7
    • 解:O(n^3)
    • c.2^n+100n^3
    • 解:O(2^n)
    • d.n^2 ·logn
    • 解:O(n^2 ·logn)
    • 這道題和書上圖2.2的例題基本同樣。
  • EX2.4 請肯定下面代碼段的增加函數和階次:code

    for(int count = 0 ; count < n ; count++)
        for(int count2 = 0 ; count2 < n ; count2 = count2 + 2)
        {
            System.out.println(count,count2);
        }
    }
    • 解:這段代碼能夠看出是嵌套循環,內層循環的循環次數是n/2,外層循環的循環次數是n,因此增加函數爲:F(n)=(n^2)/2,因此階次爲O(n^2)。
  • EX 2.5:請肯定下面代碼段的增加函數和階次:blog

    for(int count = 0 ; count < n ; count++)
        for(int count2 = 1 ; count2 < n ; count2 = count2 * 2)
        {
            System.out.println(count,count2);
        }
    }
    • 解:這段代碼能夠看出是嵌套循環,內層循環的循環次數是logn,外層循環的循環次數是n,因此增加函數爲:F(n)=nlogn,因此階次爲O(nlogn)。

結對及互評

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

按照這麼多年以來的慣例,每到學期之初,我就應該在此立下誓言:這個學期開始我要好好學習、每天向上,多讀書,多看報,少吃零食,多睡覺。事件

學習進度條

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

參考資料

相關文章
相關標籤/搜索