1. 程式人生 > >數據結構第四課筆記------------狄泰軟件學院

數據結構第四課筆記------------狄泰軟件學院

方法 策略 輸入 學院 部分 得出 測試數據 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。

數據結構第四課筆記------------狄泰軟件學院