《資料結構教程》(第5版)上機實驗題1--實驗題2:
目的:
理解常見演算法時間函式的增長趨勢對以下函式用c++程式執行觀察其變化:
<< "1、從值的變化角度分析:s-code:log2(n):
<< "
√n:<< "
n:<< "
n*log2(n):
<< "
n*n:
<< "
n^3:
<< "
2^n:
<< "
n!:
2、從消耗的時間的角度分析:
介紹乙個計時函式:
#includeclock_t start, end;s-code:start =clock();
>>>//
測試部分
end =clock();
cout
<
單位是秒
#include#includeresult:#include
#include
using
namespace
std;
double factorial(double n) //
求階乘
return
result;
}double testtime(double n) //
測試從0~n的消耗的時間
void tprint(string str, double n) //
output
intmain()
這裡測試了1011
1213
5000
五組資料顯然當n越大時所消耗的時間的變化率差距就越大
注意:
這裡的測試資料可能會由機器的效能不同產生差距,這時候就是檢驗機器效能的時候到了哈哈哈哈哈哈。。。。。其實分析函式的變化用極限就一目了然了,用程式就是為了感受下等待的痛苦,哈哈。。。。。。演算法導論 函式的增長。
因為在計算機程式設計的學習中,我們需要掌握乙個類似於 需求量 的東西,怎麼去理解需求量呢,舉個最簡單的例子,你有乙個雙層迴圈,這個雙層迴圈所需要的時間,就是乙個增長量。具體一點可以這麼去解釋這個問題,如果你在乙個迴圈裡面的每乙個步驟所需要的時間都不同的話,那麼 你的需求量就是乙個分布式的增長。我們需...
函式的增長 演算法導論 2
1.引言 這一章主要是介紹一些概念,雖然很乏味,但是它確實能夠幫助我們去更好的分析 處理問題。2.漸進記號 1 記號 g n 通俗地講,若存在正常數才c1,c2,使得對於足夠大的n,函式f n 能 夾入 c1 g n 與c2 g n 之間,則f n 屬於集合 g n 通常把f n g n 記為f n...
演算法分析中的增長數量級和近似函式
描述 近似函式 調和級數求和 hn 1 1 2 1 3 1 4 1 n lnn 等差數列求和 1 2 3 4 n n 2 等比數列求和 1 2 4 8 2 2 斯特靈公式 lgn lg1 lg2 lg3 lg4 lgn nlgn 描述增長的數量級 典型 說明舉例 常數級別 1a b c 完成任務所需...