zoukankan      html  css  js  c++  java
  • MOOC 1.1 什么是数据结构

    例1: printN

    #include <cstdio> //void PrintN(int N) //{ // for(int i = 1; i <= N; ++ i) // { // printf("%d ", i); // } // // return ; //} void PrintN(int N) { if(N) { PrintN(N - 1); printf("%d ", N); } return ; } int main() { int n; scanf("%d", &n); PrintN(n); return 0; }

      

    例二: 多项式

    运行时间不到一个tick, 那怎么才能显示出一个tick所用的时间呢?(即如何测出不到1个tick的程序运行时间?)

    让被测函数重复运行多次, 使得测出的总的时钟打点数间隔充分长, 最后计算出被测函数平均每次运行的时间即可

    // f(x) = a0 + a1x + ... + an-1x^n-1 + anx^n
    
    #include <cstdio>
    #include <ctime>
    #include <cmath>
    #define MAXN 10		// 多项式最大项系数, 即多项式阶数+1
    #define MAXK 1e7	// 被测函数最大重复调用次数 
    
    double f1(int n, double a[], double x);
    double f2(int n, double a[], double x);
    void time(double (*f2)(int n, double a[], double x)); 
    
    double a[MAXN];	// 存储多项式的系数
    
    void time(double (*f2)(int n, double a[], double x)) 
    {
    	clock_t start, stop;
    	double duration;
    	start = clock();
    	/* 重复调用函数以获得充分的时钟打点数 */ 
    	for(int i = 0; i < MAXK; ++ i) 
    	{
    		f2(MAXN - 1, a, 1.1);
    	}
    	stop = clock();
    	// 计算函数单次运行的时间 
    	duration = ((double)(stop - start)) / CLK_TCK / MAXK;
    	printf("ticks = %f
    ", (double)(stop - start));
    	printf("duration = %6.2e
    ", duration);
    }
    
    double f1(int n, double a[], double x)
    {
    	double p = a[0];
    	for(int i = 1; i <= n; ++ i)
    	{
    		p += (a[i] * pow(x, i));
    	}
    	return p;
    }
    
    double f2(int n, double a[], double x)
    {
    	double p = a[n];
    	for(int i = n; i > 0; -- i)
    	{
    		p = a[i - 1] + x * p;
    	}
    	return p;
    }
    
    int main()
    {
    	for(int i = 0; i < MAXN; ++ i)
    	{
    		a[i] = (double)i;
    	} 
    	
    	time(f2);
    	
    	return 0;
    }
    
    /*
    ticks = 1813.000000
    duration = 1.81e-007
    
    ticks = 297.000000
    duration = 2.97e-008
    */
    

      

  • 相关阅读:
    IDEA 必要配置
    人工智能能力提升指导总结
    lerna管理前端packages的最佳实践
    【和60】软件即服务的三重境界
    项目章程
    阅读计划
    使用PHP处理文本小技巧
    PHP性能分析
    Ubuntu安装nodejs和yarn
    挖矿病毒
  • 原文地址:https://www.cnblogs.com/mjn1/p/11419658.html
Copyright © 2011-2022 走看看