首页 > 编程语言 >比较两种计算1到n的累加和的算法的执行效率,理解算法的时间复杂度分析和代码性能优化

比较两种计算1到n的累加和的算法的执行效率,理解算法的时间复杂度分析和代码性能优化

时间:2024-07-09 20:55:29浏览次数:14  
标签:函数 clock 复杂度 Sum1 累加 算法 long

一、实验目的:

通过这个实验,旨在比较两种计算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. 实验结果/运行图:

标签:函数,clock,复杂度,Sum1,累加,算法,long
From: https://blog.csdn.net/2401_84750595/article/details/140306413

相关文章

  • 回溯算法-以学生就业管理系统为例
    1.回溯算法介绍1.来源回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。用回溯算法解决问题的一般步骤:1、针对所给问题,定义问题的解空间,它至少包含问题的一个(最优)解。2、确定易于搜索的解空间结构,使得能用回溯法方便地搜索整个解空间。3、以深度优先的方式搜索......
  • Dotnet算法与数据结构:Hashset, List对比
    哈希集A是存储唯一元素的集合。它通过在内部使用哈希表来实现这一点,该哈希表为基本操作(如添加、删除和包含)提供恒定时间平均复杂度(O(1))。此外,不允许重复元素,使其成为唯一性至关重要的场景的理想选择。另一方面,表示按顺序存储元素的动态数组。它允许重复元素并提供对元素的索引......
  • db B+Tree 特殊的二叉搜索树, 时间复杂度
     B+树是一种自平衡的树数据结构,常用于数据库和文件系统的实现中。它具有以下特点:多路平衡查找树:每个节点可以有多个子节点,且所有叶子节点都位于同一层,保证了树的高度相对较小,提高了查询效率。键值对存储:每个节点存储一个或多个键值对,内部节点的键用于指导搜索,而所有的......
  • 匈牙利算法——棋盘覆盖
    题目描述棋盘覆盖给定一个N行N列的棋盘,已知某些格子禁止放置。求最多能往棋盘上放多少块的长度为2、宽度为1的骨牌,骨牌的边界与格线重合(骨牌占用两个格子),并且任意两张骨牌都不重叠。输入格式第一行包含两个整数N和t,其中t为禁止放置的格子的数量。接下来t行每行包含两个整数x......
  • 【TCN-BiGRU-Attention回归预测】基于被囊群优化算法TSA优化时间卷积双向门控循环单元
        ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 【TCN-BiGRU-Attention回归预测】基于斑马优化算法ZOA优化时间卷积双向门控循环单元融
        ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • SAP CPI 之使用国密算法实现SM系列算法加解密
    先将国密算法项目打成jar包gmsm-java:国密算法-JAVA版。包含非对称算法SM2、对称算法SM4、摘要算法SM3。还包含传输加解密(SM2+SM3+SM4)、数据库加解密(SM3+SM4)、配置文件加解密(SM3+SM4)的组合使用。(gitee.com)在CPIScriptCollection中导入jar包,选择Upload,选中导入的jar包......
  • 代码随想录算法训练营第7天 | 哈希表和双指针结合、三数和四数之和
    2024年7月9日题454.四数相加II使用哈希表,分为两块,前两个数组找出各种情况,统计次数,时间复杂度为O($n^2$),后两个数组在找到各种情况的时候直接用哈希表去处前两个数组符合的相应次数即可。classSolution{publicintfourSumCount(int[]nums1,int[]nums2,int[]nums3,......
  • 【TWVRP】蚁群算法求解带时间窗的车辆路径规划(目标函数:最短距离)【含Matlab源码 4969期
    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信或扫描文章底部QQ二维码。......
  • 「代码随想录算法训练营」第六天 | 哈希表 part2
    454.四数相加II题目链接:https://leetcode.cn/problems/4sum-ii/题目难度:中等文章讲解:https://programmercarl.com/0454.四数相加II.html视频讲解:https://www.bilibili.com/video/BV1Md4y1Q7Yh题目状态:没思路思路:创建一个unordered_map<int,int>类型的哈希表用来存储......