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

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

數據結構 pre 復雜度分析 sys 增長 之間 style 思考 程序設計

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

教材學習內容總結

第一章 概述

1.1 軟件質量

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

技術分享圖片

1.2 數據結構

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

技術分享圖片

第二章

2.1 算法效率分析

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

2.2 增長函數與大O記法

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

技術分享圖片

2.3 增長函數的比較

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

技術分享圖片

  • n相對較小時

技術分享圖片

  • n很大時

技術分享圖片

2.4 時間復雜度分析

  • 循環的時間復雜度等於循環體的復雜度乘以該循環運行的次數
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 請確定下面代碼段的增長函數和階次:

    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:請確定下面代碼段的增長函數和階次:

    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

參考資料

  • [Java軟件結構與數據結構](第四版)
  • java中的各個數據結構區別

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