データ構造は何MOOC 1.1

例1:printN 

の#include <cstdioを> //空隙PrintN(int型N) // { //ため(INT i = 1; iが<= N; ++ I) // { //のprintf( "%Dの\ nを"、 私); //} // //リターン。 //} ボイドPrintN(int型N) { (N)であれば { PrintN(N - 1)。 printf( "%d個の\ n"、N)。 } を返します。 } メインINT() { int型のn; scanf関数( "%のD"、&N); PrintN(N) 0を返します。 }

  

例2:多項式

時間を実行すると、それはダニがそれを使用する時間にする方法を示し、ダニよりも少ないのですか?(つまり、プログラムの実行時間未満の1つの目盛りを測定するために、どのように?)

機能テストを実行するために複数回繰り返してみましょう、測定された総ヒット数のクロック間隔が十分に長くなるように、それぞれに計算した平均の最後に測定時間関数を実行するに

F //(X)= A0 + ... + AN-A1X + 1×+ ANX ^^。1-N-N- 

の#include <cstdioを> 
する#include <CTIME> 
の#include <cmath> 
の#define MAXN 10 //最大多項式用語係数、すなわち、多項式の次数+ +1 
の#define繰り返しの最大数のMAXK 1E7 //テスト関数が呼び出す

ダブルF1を(N-INT、ダブルA []、ダブルX); 
ダブルF2(N-INT、ダブルA []、ダブルX) ; 
ボイド時間(二重(* F2) (整数nは、ダブル[ ]、ダブルX)); 

ダブル[MAXN]; //格納された多項式係数

ボイド時間(二重(* F2) (整数nは、二重[ ]、ダブルX))は
{ 
	clock_tスタート、ストップ、
	ダブル期間; 
	START =クロック(); 
	/ *関数が繰り返し呼び出されるクロックを果たしている十分な数の点を取得する* / 
	用(INT I = 0; I <MAXK; I ++は)
	{ 
		F2(MAXN - 1、A、1.1。); 
	} 
	STOP =クロック()。 
	//単一の実行からの時間の関数を計算します
	持続時間=((ダブル)(ストップ-スタート))/ CLK_TCK / MAXK。
	printf((ダブル)(ストップ"=%のFを\ nティック" -スタート))。
	printf( "持続時間=%6.2eする\ n"、持続時間)。
} 

二重F1(INT nは、[]、二重Xを倍増)
{ 
	ダブルP = [0]。
	(I 1 = int型、iが<= N; I ++)のために
	{ 
		P + =([I] * POW(X、I))。
	} 
	Pを返します。
} 

二重F2(整数nは、ダブル[]、ダブルX)
{ 
	ダブルP = [N]。
	-のための式(I; I> 0は、I = N INT)
	{ 
		Pは[I - 1] = + X * Pと、
	} 
	Pを返します。
} 

int型のmain()
{ 
	(INT i = 0; iはMAXNを<; ++ i)について
	{ 
		[I] =(ダブル)I。
	}
	
	時間(F2)。
	
	0を返します。
} 

/ * 
= 1813.000000チック
持続時間= 1.81e-007 

= 297.000000ティック
持続時間= 2.97e-008 
/ *

  

おすすめ

転載: www.cnblogs.com/mjn1/p/11419658.html