在學演算法的時候,經常會涉及分析演算法的複雜度和效率的問題,按照書本上的理論通常也能夠大概推出個結論。通常都是根據演算法中重要的語句去推算,例如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 交換前的...