20172314 2018-2019-1《程序设计与数据结构》第一周学习总结
教材學習內容總結
概述
- 軟件工程:是一門關于高質量軟件開發的技術和理論的學科,用來控制開發過程,實現高質量的軟件。
軟件工程的目標:正確性、可靠性、健壯性、可用性、可維護性、可重用性、可移植性、運行效率。
對于可靠性和健壯性這兩個較難區分的特征我的理解是:可靠性可以看做一個人容易不容易生病,健壯性可以看成一個人生病后恢復的難易程度,是身體強壯康復快還是落下病根罒ω罒- 程序=數據結構+算法 ;軟件=程序+軟件工程
- 數據結構:數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關系的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高的運行或者存儲效率。數據結構往往同高效的檢索算法和索引技術有關。
常用的數據結構比如棧(先入后出)和隊列(先入先出)
算法分析
- 算法分析:是對一個算法需要多少計算時間和存儲空間作定量的分析。算法是解題的步驟,可以把算法定義成解一確定類問題的任意一種特殊的方法。算法分析是計算機科學的一個基礎,并涉及多種技術和概念。
- 算法效率:算法效率是指算法執行的時間,算法執行時間需通過依據該算法編制的程序在計算機上運行時所消耗的時間來度量,通常是CPU的使用時間。
- 增長函數:表示問題(n)大小與我們希望最優化的值之間的關系。該函數表示了該算法的時間復雜度(CPU的使用時間)或空間復雜度(內存空間)。
- 漸進復雜度(隨著n增加時增長函數的一般性質)稱為算法的階次。算法的階次是忽略該算法的增長函數中的常量和其他次要項,只保留主項而得出的。
- 大O記法/O():與問題大小無關、執行時間恒定的增長函數稱為具有O(1)的復雜度。
- 具有相同階次的算法,從運行效率的角度來說都認為是等價的。
- 更快的CPU只能給函數增加常量,增加的值是固定的,而算法分析可以隨著函數的變化提高增值,所以不能通過提高處理器速度來替代算法分析。
- 增長函數的比較:
n相對較小時各種增長函數的比較
n很大時,各種增長函數的比較
- 循環運行的時間復雜度分析:循環體的階次n乘以該循環要運行的次數。
- 例1:時間復雜度為n * O(1) = O(n)
- 例2:時間復雜度為O(log2(n));進行次數為x,所以2^x=n,x=log2(n),復雜度為O(1),所以為O(log2(n))
- 嵌套循環的復雜度分析
- 例1:內層復雜度為O(n),外層為O(n),故為O(n^2)
- 方法調用的復雜度分析
- 例1:復雜度為printsum方法的復雜度乘以該循環的運行次數,即為O(n)*O(n)=O(n^2)
printsum方法為
- 例2:增長函數為復雜度相加,f(n)=1+n+n^2;得出時間復雜度為O(n^2)
- 例1:復雜度為printsum方法的復雜度乘以該循環的運行次數,即為O(n)*O(n)=O(n^2)
作業解答
EX2.1求階次
a.10n^2+100n+1000
解:階次是n^2。式子中漸進復雜度最高的是n^2,它的增長速度最快。
b.10n^3-7
解:增長速度最快的是n^3
c. 2^n+100n^3
解:2^n的增長速度大于n^3,所以階次是2^n
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,內層循環為1/2n,所以增長函數f(n)=n* 1/2n=1/2n^2;階次為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,內層循環需要進行次數為為x,則2^x=n,x=log2(n),所以增長函數是f(n)=nlog2(n),而階數與增長函數的最高階項有關,要忽略次項與常數項,階次是nlog2(n).
學習進度條
| 積累 | 0/7359 | 3/17 | 30/330 |
| 第一周 | 0/0 | 1/1 | 8/8 |
結對及互評
點評模板:
- 博客中值得學習的或問題:
- 20172305譚鑫的博客中課本疑難問題解決的很好,內容全面。
- 20172323王禹涵的博客中課本內容總結詳實,感悟深刻。
- 基于評分標準,我給譚鑫的博客打分:7分。得分情況如下:
- 問題加分3分
- 感悟不假大空加1分
- 排版精美的加1分
-正確使用Markdown語法加1分
-模板中的要素齊全加1分
- 基于評分標準,我給王禹涵的博客打分:5分。得分情況如下:
- 排版精美的加1分
- 問題加分1分
- 感悟不假大空加1分
-正確使用Markdown語法加1分
-模板中的要素齊全加1分
感悟
有一段時間沒有學習了,假期有點點懈怠,突然學習兩章內容,看了很久,感覺還沒進入狀態比較生疏,有些概念較難分清,新的一學期仍需繼續努力,多多聯系,對課本的理解要到位,加油吧!
參考
- 數據結構
- 算法分析
轉載于:https://www.cnblogs.com/YiYiYi/p/9614547.html
總結
以上是生活随笔為你收集整理的20172314 2018-2019-1《程序设计与数据结构》第一周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: luogu P2516 [HAOI201
- 下一篇: 通过adb巧用monkey获取andro