【數據結構實戰C++】4 算法複雜度概念

【數據結構實戰C++】4 算法複雜度概念

作者 CodeAllen ,轉載請註明出處


效率是工程中最關注的算法特性

算法效率的量度的幾個方法

事後統計法
-比較不同算法對同一組輸入數據的運行處理時間
-缺陷

  • 爲了獲得不同算法的運行時間必須編寫相應程序
  • 運行時間嚴重依賴硬件以及運行時的環境因素
  • 算法的測試數據的選取很困難

事前分析估算
-依據統計的方法對算法效率進行估計
-影響算法效率的主要因素

  • 1,算法採用的策略和方法
  • 2,問題的輸入規模
  • 3,編譯器所產生的代碼
  • 4,計算機的執行速度

算法效率的簡單估計一
在這裏插入圖片描述

算法效率的簡單估計二
在這裏插入圖片描述
算法效率的簡單估計三
在這裏插入圖片描述
程序效率估算

#include <iostream>

using namespace std;

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
}


int main()
{
    int array[] = {1, 2, 3, 4, 5};
    
    cout << func(array, 5) << endl;
    
    return 0;
}

上述程序關鍵部分的操作數量是n*n
三種求和算法中關鍵部分操作數量分別是2n, n ,1

不同算法操作數量的對比
在這裏插入圖片描述

算法操作數量對比一在這裏插入圖片描述

算法操作數量對比二
在這裏插入圖片描述

算法操作數量對比三
在這裏插入圖片描述

小結
算法度量方法有 事後統計法和事前分析估算法
事後統計法不容易準確度量算法的效率
事前分析估算法通過操作數量度量算法效率
判斷一個算法效率時只關注最高階項就能得到結論

算法隨着問題規模n的增大,會越來越優越於另一個算法,或者越來越差於另一個算法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章