实验题1:对比同一问题不同解法的绝对执行时间体会不同算法的优劣?

内容:

编写一个程序,Exp1-1.cpp,对于给定的正整数n,求1+2+...+n,采用逐个累加,与n(n+1)/2(高斯法)两种解法。对于相同的n,给出这两种解法的求和结果和求解时间,并用相关数据进行测试.

//文件名:exp1-1.cpp
#include
#include              //clock_t, clock, CLOCKS_PER_SEC
#include

//------方法1-----------------------------------------------
long add1(long n)            //方法1:求1+2+...+n
{
    long i,sum=0;
    for (i=1;i<=n;i++)
        sum+=i;
    return sum;
}

void AddTime1(long n)        //采用方法1的耗时统计
{
    clock_t t;
    long sum;
    t=clock();
    sum=add1(n);
    t=clock()-t;
    printf("方法1:\n");
    printf("  结果:1~%d之和:%ld\n",n,sum);
    printf("  用时:%lf秒\n" ,((float)t)/CLOCKS_PER_SEC);
}

//------方法2-----------------------------------------------
long add2(long n)            //方法2:求1+2+...+n
{
    return n*(n+1)/2;
}
void AddTime2(long n)        //采用方法2的耗时统计
{
    clock_t t;
    long sum;
    t=clock();
    sum=add2(n);
    t=clock()-t;
    printf("方法2:\n");
    printf("  结果:1~%d之和:%ld\n",n,sum);
    printf("  用时:%lf秒\n" ,((float)t)/CLOCKS_PER_SEC);
}
//------------------------------------------------------------
int main()
{
    int n;
    printf("n(大于1000000):");
    scanf("%d",&n);
    if (n<1000000) return 0;
    AddTime1(n);
    AddTime2(n);
    return 1;
}
 

你可能感兴趣的:(编程,#,数据结构与算法)