一、实验目的:
通过这个实验,旨在比较两种计算1到n的累加和的算法的执行效率,进一步理解算法的时间复杂度分析和代码性能优化。
二、实验内容:
1. 编写两个函数Sum1和Sum2,分别用于计算1到n的累加和;
2. 在主函数中调用这两个函数,并通过循环计算1到n的各个累加和;
3. 使用clock函数计算程序执行时间,比较Sum1和Sum2的性能差异。
三、实验过程:
1. 实现思路:
- 编写两个函数Sum1和Sum2,分别使用循环和公式计算1到n的累加和;
- 在主函数中调用这两个函数,循环计算1到n的各个累加和;
- 使用clock函数记录程序执行时间,比较两种算法的执行效率。
2. 实验步骤/实现代码:
- 编写Sum1和Sum2函数分别计算1到n的累加和;
- 在主函数中通过循环调用这两个函数,并记录执行时间;
- 输出两种算法的执行时间和计算结果。
#include<iostream>
#include<time.h>
using namespace std;
long Sum1(long n){
long s=0;
for(long i=1;i<=n;i++)
s+=i;
return s;
}
long Sum2(long n){
long s=n*(n+1)/2;
return s;
}
int main(){
long sum1=0;
long sum2=0;
long n;
cout <<"请输入数字"<<endl;
cin>>n;
clock_t start1,end1,start2 ,end2;
double cpu_time_used;
start1=clock();
for(int i=1;i<=n;i++){
sum1=sum1+Sum1(i);
}
end1= clock();
cpu_time_used=((double)(end1-start1))/CLOCKS_PER_SEC;
printf("程序1执行的时间:%f seconds\n",cpu_time_used);
start2=clock();
for(int i=1;i<=n;i++){
sum2=sum2+Sum2(i);
}
end2= clock();
cpu_time_used=((double)(end2-start2))/CLOCKS_PER_SEC;
printf("程序2执行的时间;%f seconds\n",cpu_time_used);
cout <<"sum1"<<sum1<<endl;
cout <<"sum2"<<sum2<<endl;
}
3. 实验结果/运行图: