演算法採用的策略和方法
問題的輸入規模
編譯器所產生的**
計算機執行速度
時間複雜度和空間複雜度
通過計算演算法裡總的運算元量衡量演算法效率以下表為例,當程式執行相同的次數時不同的演算法執行的次數是不同的因為演算法最終是由具體的計算機指令實現,每個指令在計算機cpu上執行的時間是固定的,這樣通過具體的n步就可以推導出演算法的複雜度
在評估演算法的好壞時要注意:
判斷乙個演算法的效率時,往往只需要關注運算元量的最高次項,其它次要項和常數項可以忽略演算法效率嚴重依賴操作(operation)數量在沒有特殊說明時,我們所分析的演算法的時間複雜度都是指最壞的時間複雜度
在判斷時首先要關注運算元量的最高次項
運算元量的估算可以作為時間複雜度的估算
比如下面是關於演算法效率的計算:
常見的時間複雜度模型:
通過計算演算法的儲存空間來實現,即看程式對記憶體的需求比如:
s(n) = o(f(n))
其中n為問題規模,f(n)為在問題規模為n時所占用的儲存空間的函式
大o表示法同樣適用於演算法的空間複雜度
注:當演算法執行時所需要的空間是常數時,空間複雜度為o(1)
例子:乙個陣列中存放了從1-1000的隨機整數,求陣列**現次數最多的那個數。
//統計字串**現次數最多的那個數
int main()
; int x[1000] = ;
int max=0;
//cout << sizeof(a)/sizeof(*a) << endl;
int len = sizeof(a) / sizeof(*a);
for (int i = 0; i < len; i++) //遍歷陣列求每個數字出現的次數,然後記錄下來
for (int i = 0; i < 1000; i++)//掃瞄陣列求最大數 }
for (int i = 0; i < len; i++) //輸出
資料結構 演算法基本概念
1 有窮性 2 確定性 3 可行性 4 輸入 5 輸出 1 時間複雜度 它定性描述演算法的執行時間。乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。乙個演算法中的語句執行次數稱為語句頻度或時間頻度,記為t n 時間複雜度又分為 最壞時間複雜度,平均時...
資料結構和演算法基本概念
版本號 2018 09 25 1 23 00 特別鳴謝兄弟提供的幫助 jun shibata 丶 sank 1 資料結構的定義是什麼?資料結構是計算機儲存 組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。2 用自己的話簡單講講什麼是資料結構?一組資料的儲存結構 3 演算法...
資料結構與演算法基本概念
一 基本資料結構 基本資料結構的定義 特性 運算 演算法。基本資料結構的分類 邏輯結構 1 線性結構 線性表 棧 佇列 雙佇列 陣列 廣義表 串 2 非線性結構 樹 二叉樹 圖 網 儲存結構 1 順序儲存 向量 一維陣列 2 鏈式儲存 鍊錶 二 演算法 查詢 順序 折半 分塊 雜湊 二叉排序樹 排序...