1、實驗目的:
(1)掌握時間複雜度的基本概念。
(2)熟悉程式計算時間的計時方法。
2、實驗環境與裝置:
已安裝visual studio 2010(或其以上版本)整合開發環境的計算機。
3、實驗原理:
基於計時函式clock()進行毫秒級計時。
4、實驗內容:
請編寫兩個程式,分別呼叫下列兩個函式測試它們在不同計算規模時的執行時間並驗證其時間複雜度,嘗試畫出計算時間相對於計算規模的函式曲線示意圖。
(1)在三重迴圈下的基本加法運算的計算時間與計算規模的關係,其時間複雜度為o( n3 )。函式定義如下:
void add (
int n )
(2)呼叫hanoi函式測試漢諾塔問題的計算時間與計算規模的關係,其時間複雜度為o( 2n )。函式定義如下:
void
hanoi
(int disc,
int start,
int temporary,
int goal )
}
5、實驗考核:
(1)完成紙質版實驗報告
(2)提交電子版作業
6、執行結果示例如下:
漢諾塔計算結果圖
注意:測試時,至少給出20個不同的n值(程式1可以讓n取值為100、200、300等離散值;程式2可以讓disc取值為1、2、3等離散值),函式影象的繪製可以借助excel來完成,具體步驟如下:
全選這兩列,找到插入->散點圖,選擇下面的所有圖表型別,開啟。找到xy散點圖確定。excel就會生成下面的圖了。
實驗原始碼
#include
#include
//記得整體注釋大於90%
//todo我的注釋都是廢話
//很簡單的東西
void
add(
int n)
void
hanoi
(int disc,
int start,
int temporary,
int goal)
}int
main()
/*尾*/
//或者這樣用函式
//記得統計時間,填到另乙個excel**中
clock_t start, end;
start =
clock()
;//add(test);
每次測試乙個
hanoi
(test,1,
2,3)
; end =
clock()
;printf
("計算所需要的時間%f",(
double
)(end-start)
*1000
/clk_tck)
;system
("pause");
return0;
}
資料結構 時間複雜度 空間複雜度
1.演算法效率 演算法效率可以用來衡量乙個演算法的好壞 演算法效率分析分為兩種 第一種是時間效率,第二種是空間效率.時間效率被稱為時間複雜度,空間效率被稱為空間複雜度.時間複雜度主要衡量的是乙個演算法的執行速度,而空間複雜度主要衡量乙個演算法所需要的額外空間,在計算機發展的早期,計算機的儲存容量很小...
資料結構時間複雜度
如何衡量乙個演算法的複雜度?演算法的時間複雜度和空間複雜度統稱為演算法的複雜度 void test int n for int k 0 k 2 n k icount intcount 10 while count icount 這個函式執行次數為f n n n 2 n 10 時間複雜度實際就是乙個函...
資料結構 時間複雜度
一 演算法 是解決特定問題求解不走的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。1.正確性 演算法的正確性是指演算法至少應該具有輸入 輸出和加工處理無歧義性 能正確反映問題的需求 能夠得島問題的正確答案。2.可讀性 演算法設計的另一目的是為了方便閱讀 理解和交流。3.健壯性...