數據結構第四課筆記------------狄泰軟件學院
阿新 • • 發佈:2018-01-12
方法 策略 輸入 學院 部分 得出 測試數據 ret 功能性 程序的效率
問題:
如果兩個算法都符合功能性需求,那工程中最關心的其他特性是什麽?如何比較評判?
性價比(效率)是工程中最關註的的算法附加特性!
算法效率的度量
1.事後統計法:比較不同算法對同一組輸入數據的處理時間。
缺陷:(1)為了獲得不同算法必須編寫相應程序
(2)運行時間嚴重依賴硬件以及運行時的環境因素
(3)算法的測試數據選取困難
2.事前分析估算:依據統計的方法對數據進行估算
影響算法效率的主要因素:
(1)算法采用的策略和方法
(2)問題的輸入規模
(3)編譯器所產生的代碼
(4)計算機執行速度
int func(int a[], int len) // ==> (n*n + 2) { int ret = 0; // 1 for(int i=0; i<len; i++) { for(int j=0; j<len; j++) { ret += a[i] * a[j]; // n * n } } return ret; // 1 }
程序效率的關鍵部分為n^2,隨著n的不斷增大,操作的數量很大程度的增大,不同的程序在這時候效率的差距就體現出來了。
總結:
事前分析估算法通過操作數量來判斷程序效率。
判斷一個算法效率是只需關註最高階就能得出結論
如:2n+1 與 n^2+1 只需比較 n與n^2。
數據結構第四課筆記------------狄泰軟件學院