20172324 2018-2019-1 《程序設計與數據結構》第一周學習總結
阿新 • • 發佈:2018-09-10
htm baidu img 等於 法規 函數 數據結構 方式 環境
20172324 2018-2019-1 《程序設計與數據結構》第一周學習總結
教材學習內容總結
概述
- 軟件質量
- 準確性:軟件提供的功能是否正確(用戶需要的)
- 可靠性:產品在規定的條件下,在規定的時間內完成規定功能的能力
- 健壯(易恢復)性:系統失效後,重新恢復原有的功能和性能的能力
- 可用性:在指定使用條件下,產品被理解、 學習、使用和吸引用戶的能力
- 可維護性:在規定條件下,規定的時間內,使用規定的工具或方法修復規定功能的能力
- 可重用性:軟件組建可用於其他軟件開發的難易程度
- 可移植性:從一種環境遷移到另一種環境的能力
- 運行效率:在不浪費資源的情況下軟件完成目標的程度
- 數據結構
- 數據結構:計算機存儲、組織數據的形式。
程序 = 數據結構 + 算法
軟件 = 程序 + 軟件工程
- 數據結構:計算機存儲、組織數據的形式。
算法分析
效率目標
算法效率常用CPU的使用時間表示
算法分析
算法分析是從效率的角度對算法進行分類
- 增長函數與大O記法
- 增長函數是表示問題(n)大小與我們希望最優化的值之間的關系,該函數表示了該算法的時間復雜度或空間復雜度。
- 大O記法:我們將算法具有階次為n的時間復雜度,記為O(n)。
不管問題是大是小,運行賦值語句和if語句一次,其復雜度就為 O(1)。
漸進復雜度
漸進復雜度稱為算法的階次
- 算法的階次是忽略該算法的增長函數的常量和其他次要項,只保留主項。
- 增長函數的比較
時間復雜度分析
1.假設某個循環體復雜度為O(1),那麽下面循環的時間復雜度為 O(n)
for(int count = 0;count<n;count++)
{
//*復雜度為O(1)的步驟系列
}
某個循環結構以線性方式循環n次,且該循環的復雜度為O(1),那麽循環的時間復雜度為 O(n)
2.如果循環的復雜程度是對數級的
count = 1;
while(count < n)
{
count *=2;
//復雜度為O(1)的步驟系列
}
3.嵌套循環的復雜度分析循環出現嵌套時,循環的復雜度等於內層循環的復雜度乘以外層循環的復雜度
for (int count = 0; count < n; count++) for (int count2 = 0; count2 < n; count2++) { //復雜度為O(1)步驟系列 }
時間復雜度的計算規則
1) 加法規則
T(n,m) = T1(n) + T2(n) = O (max ( f(n), g(m) )
2) 乘法規則
T(n,m) = T1(n) * T2(m) = O (f(n) * g(m))
3) 一個特例(問題規模為常量的時間復雜度)
在大O表示法裏面有一個特例,如果T1(n) = O(c), c是一個與n無關的任意常數,T2(n) = O ( f(n) ) 則有T(n) = T1(n) * T2(n) = O ( c*f(n) ) = O( f(n) )。也就是說,在大O表示法中,任何非0正常數都屬於同一數量級,記為O(1)。
教材學習中的問題和解決過程
教材布置習題解答
- EX2.1 下列增長函數的階次是多少?
a.10n^2+100n+1000:n^2
b.10n^3-7:n^2
c.2^n+100n^3:n^3
d.n^2 ·log(n):n^2 ·log(n) - EX 2.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);
}
}
屬於嵌套循環,內循環需要的次數:log?(n-1),外循環需要的次數n。故:增長函數為F(n)=n·log?(n-1),階次為O(n·log2(n))
其他(感悟、思考等,可選)
參考資料
- PPT
- 軟件質量特性
20172324 2018-2019-1 《程序設計與數據結構》第一周學習總結