演算法分析主要包括時間複雜度和空間複雜度。
時間複雜度 可以有事前分析和事後測試兩種。
事前分析通過計算程式步數來表示
事後測試需要在程式中加入計算時間的函式來統計。在這裡我採用的是clock()函式
該函式在標頭檔案 time.h 或者ctime下
分析結果如下:
#include#includeusing namespace std;
int main()
system("pause");
return 0;
}
計時函式 clock的資料型別:clock_t
(double)clock() / clocks_per_sec 用來計算執行時間。
程式步數規則
編輯距離問題演算法分析
一 問題分析 本題提出了一些關於將字串x 1.m 轉換成y 1.n 的操作。這些操作有複製 替代 刪除 插入 互換和終止。這些操作所需的開銷是不同的,但每個操作的開銷都可以看是乙個我們已經的常量,我們假設複製和替代這類操作的開銷要比插入和刪除這類操作的開銷少。我們用x 1.m 來儲存原字串,陣列下標...
演算法分析 Hanoi塔問題
上圖為 3 階 hanoi 塔 假設有三個命名為 a b c 的塔座 在塔座a上插有n個直徑大小不相同,由小到大編號為1 2 3 n的圓盤,要求將a座上的圓盤移至塔座c 並按同樣的順序疊排 圓盤移動必須遵守下列規則 1 每次只能移動乙個圓盤 2 圓盤可以插在任意乙個塔座上 3 任何時刻都不能將乙個較...
演算法設計與分析 分而治之演算法 金塊問題
目錄 題目描述 問題分析 編寫 列印結果 老闆有一袋金塊 共n塊,n是2的冪 n 2 最優秀的雇員得到其中最重的一塊,最差的雇員得到其中最輕的一塊。假設有一台比較重量的儀器,希望用最少的比較次數找出最重和最輕的金塊。對於一般思路 通過乙個函式max進行n 1次比較來找到最重的金塊,然後再從餘下的n ...