如何比較兩個演算法的效率

2021-06-16 09:48:40 字數 1034 閱讀 9477

在學演算法的時候,經常會涉及分析演算法的複雜度和效率的問題,按照書本上的理論通常也能夠大概推出個結論。通常都是根據演算法中重要的語句去推算,例如for 迴圈語句等。那麼有沒有可以用程式去真正上機實驗的辦法呢?

其實方法也是很簡單,如果我們用的是c語言,可以利用#include 檔案中的ftime()函式完成。具體舉例如下:

程式1:

#include

#include

int main(void)

sum += sum1;

}ftime(&t2);//求程式執行到此的當前時間

t = (t2.time - t1.time)*1000+(t2.millitm-t1.millitm);//計算時間差;

printf("sum= %lf 用時 %ld毫秒\n",sum,t); 

return 0;}

輸入:123 

10000

輸出:sun= 0.991935 用時 325 毫秒

程式2:

#include

#include

int main(void)

ftime(&t2);//求程式執行到此的當前時間

t = (t2.time - t1.time)*1000+(t2.millitm-t1.millitm);//計算時間差;

printf("sum= %lf 用時 %ld毫秒\n",sum,t); 

return 0;

}輸入:123 10000

輸出:sun= 0.991935 用時 1 毫秒

分析: 其實兩個函式實現的功能都是一樣的,計算 1-1/x+1/x*x... 

第乙個程式的頻度表示式為(1+n)*n/2,它的時間複雜度是n的平方。第二個實現程式的頻度表示式為 n,時間複雜度也是n。通過上機實驗,在輸入相同的資料的情況下,第二個實現程式的用時遠遠比第乙個要快。

通過簡單呼叫乙個計算時間的函式,就可以輕鬆比較出兩個實現同樣功能的程式的效率。不過在現今計算機速度超快的時代,我們也不會計較這樣細微的差別。而乙個程式我們更多的是考慮它的可讀性等問題。

兩個排序演算法比較

一.起泡法排序 起泡法排序 掌握兩個重點,1 n個數排序需要進行n 1趟排序 2 第j趟排序需進行n j次比較 交換 程式如下 定義一維陣列,這裡a 0 不用,儲存a 1 a 5 共5個元素,因此n為5.include main for i 1 i 5 i printf n d a i 上述程式中,...

如何比較兩個 Schema 的異同

有的時候,dba 需要迅速找出來同乙個 oracle 資料庫上或者不同資料庫的兩個 schema 的差異.這種情況應該比較常見,比如測試資料庫發布到產品資料庫的時候,需要 dba 做頻繁的檢查。應對的辦法之一是通過 toad 這樣的 gui 工具來查詢.具體操作應該是很簡單的。oracle 自帶的 ...

php比較兩個變數的值 php如何交換兩個變數的值

本篇文章主要給大家介紹php交換兩個變數的值的具體實現方法。交換兩個變數是指相互交換變數的值。通常,這是通過記憶體中的資料完成的。交換兩個變數的方法有兩種 下面我們就通過具體的 示例為大家介紹php交換兩個變數值的方法。方法一 使用第三個變數交換兩個數字 如下 a 15 b 27 echo 交換前的...