前言

在最近整理大学前两年学的内容时,突然发现了这个初级数据结构程序,主要是对各种数据结构的性能加以对比。当时没觉得容易,现在简要的看了一下,感觉确实比较基础。现在优化部分代码后放在这里,或许可以给各位带了来一些帮助。

题目要求

Performance Measurement (POW)



Note: If a function runs so quickly that it takes less than a tick to finish, we may repeat the function calls for K times to obtain a total run time, and then divide the total time by K to obtain a more accurate duration for a single run of the function. The repetition factor must be large enough so that the number of elapsed ticks is at least 10 if we want an accuracy of at least 10%.
The test results must be listed in the following table:

The performances of the three functions must be plotted in the same N–run_time coordinate system for illustration.

代码部分

#include <stdio.h>;
#include <time.h>;#define k 300000                                          //设定 k 为重复运行的次数 double Algorithm_1(double x,int n);                         //Algorithm 1的函数
double Algorithm_2_recursive(double x,int n);             //recursive version of Algorithm 2的函数
double Algorithm_2_iterative(double x,int n);             //iterative version of Algorithm 2的函数 int main()
{   double duration,x,ans_1,ans_2,ans_3;                  //ans_1,ans_2,ans_3分别为三个函数计算出来的结果 , x 为底数 clock_t  start,stop;int n;                                                //n 为指数 printf ("请输入X和N\n");                              scanf("%lf%d",&x,&n);                                 //输入底数 x 和指数 n  start=clock();                                        //开始计时 for(int i=0;i<k;i++)                                  //重复运行函数 k 次 (Algorithm 1) {ans_1= Algorithm_1(x,n);                   }stop=clock();                                         //结束计时 duration=((double)(stop-start))/CLK_TCK;              //重复 k 次所花费的的总时间 printf("Algorithm 1:\n计算结果为%lf \n",ans_1);       //输出结果 printf("耗时为%lfs \n",duration);                   //输出总运行时间 (Algorithm 1) start=clock();                                        //开始计时 for(int i=0;i<k;i++)                                  //重复运行函数 k 次 (recursive version of Algorithm 2){ans_2=Algorithm_2_recursive(x,n);           }stop=clock();                                         //停止计时 duration=((double)(stop-start))/CLK_TCK;printf("recursive version of Algorithm 2:\n计算结果为%lf \n",ans_2);printf("耗时为%lfs \n",duration);                   //输出总运行时间 (recursive version of Algorithm 2) start=clock();                                       //开始计时 for(int i=0;i<k;i++)                                  //重复运行函数 k 次 (iterative version of Algorithm 2){ans_3=Algorithm_2_iterative(x,n);}stop=clock();                                          //停止计时 duration=((double)(stop-start))/CLK_TCK;printf("iterative version of Algorithm 2:\n计算结果为%lf \n",ans_3);printf("耗时为%lfs \n",duration);                    //输出总运行时间 (iterative version of Algorithm 2)return 0;
}double Algorithm_1(double x,int n)                         //算法一,应用 n-1 次的乘法
{double m=1;for (int i=0;i<n;i++)                                  //for循环来重复 n-1 次乘法 m=m*x;             return m;
} double Algorithm_2_recursive(double x,int n)               //递归的算法二
{if (n==0) return 1;if (n==1) return x;if (n % 2 == 0)                                    //如果n是偶数,则返回 Algorithm_2_recursive(x*x,n/2);return Algorithm_2_recursive(x*x,n/2);else                                               //如果n是奇数,则返回 Algorithm_2_recursive(x*x,n/2)* x;return Algorithm_2_recursive(x*x,n/2)* x;}double Algorithm_2_iterative(double x,int n)                //迭代的算法二
{double m=1;                                         int sign[40];                                       //定义一个数组  for(int i=0;i<40;i++){                              //初始化为 0 sign[i]=0;}int j=0;while(n>0){                                                   //sign 数组记录指数 n 每次除以 2 后的余数 sign[j++]=n%2;n/=2;}--j;while(j>=0){if(sign[j]){                                               //如果某次余数为 1 ,则上来时需再乘以一个 x m=m*m*x;}else m=m*m;                                    //如果某次余数为 0 ,则不需要乘以 x --j;}return m;                                           //返回最后的结果
}

后记

记得这应该是Data Structure课程的第一个大程。相对最为简单,之后我将陆续整理DS课程和ADS课程的其他大程一并放上来,以望共勉。

数据结构之数据指标对比(Performance Measurement)相关推荐

  1. 详解数据仓库数据指标数据治理体系建设方法论

    一.数据仓库 数据仓库概念 英文名称为Data Warehouse,可简写为DW或DWH.数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support).它出于分 ...

  2. 数据仓库amp;数据指标amp;数据治理体系搭建方法论

    数据仓库的基本概念 数据仓库概念 英文名称为Data Warehouse,可简写为DW或DWH.数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support).它 ...

  3. imp 只导表前10条数据_做电商设计,你必须懂的10条数据指标

    数据指标是什么?--是一个切入数据的角度.有了数据指标的存在,才能知道需要采集什么数据.需要持续监测什么数据.用什么角度来和历史表现做对比. 数据指标的类型各种各样,有些指标是被广泛使用的,如 DAU ...

  4. 数据指标有哪些?什么是好的数据指标?

    上篇文章梳理交流了关于数据监控体系的意义和搭建思路,明确了数据监控在数据分析中重要性,了解了数据监控体系搭建方法论.(关于数据监控体系,它的意义和搭建思路都在这里了)本篇将继续探讨数据分析中又一环&q ...

  5. 数据产品-数据指标标签常用sql函数

    SQL能力是作为数据产品经理必不可少的技能,当然,作为数据产品,我们对SQL的查询效率的要求可能不像开发那么高.而对于SQL的学习一般也是只需懂DQL查询语言就行,对于DCL.DDL.DML这些一般只 ...

  6. mysql导出结构及数据结构,Mysql导出数据结构 or 数据

    如果我们单单只想导出mysql数据表结构,通过navcat工具还不行,这时我们可以用mysqldump工具 在mysql server的安装目录:C:\Program Files\MySQL\MySQ ...

  7. 产品运营都必须知道的数据指标们

    文章转载自公众号  PB产品 , 作者 Soso          数据指标,在大多数时候确实可以衡量一个产品的好坏表现,不仅如此还可以帮助我们找到问题点,避免拍脑袋式的思考模式. 近期经常碰到有些同 ...

  8. 对大数据指标的理解、大数据常用指标都有哪些

    导读:数据指标体系是构建数据中台的重要一环.数据指标的建立让运营及产品人员更直观地看到基本指标的变动,让数据分析师更便捷地开展数据分析工作.数据指标就是将大数据之"大"的精髓给提炼 ...

  9. APP活动运营:应关注哪些数据指标?

     活动策划(准备阶段)需要思考哪些数据指标 策划一个活动,肯定要明确自己做活动的一个目的是什么?更偏重的是品牌传播.拉新?还是更多为了活跃用户,提高用户留存?通过活动想达到什么样的具体效果?因此在 ...

最新文章

  1. System commands can run from cmd
  2. leetcode —— 866. 回文素数
  3. Jquery 安装到Visual Studio 2008
  4. 一次 MySQL 索引面试,被面试官怼的体无完肤!
  5. 浙大计算机学院 数字媒体处理与企业智能计算实验室在哪个校区,浙大计算机学院各大实验室介绍.pdf...
  6. nginx处理域名后面多一个点
  7. 手把手教你 1:win7下安装SQL Server2005开发版步骤
  8. excel常用的数据处理方法
  9. shal()函数绕过和session验证绕过
  10. python实现ip地址查询
  11. axure 元件_Axure动态面板(上下左右滑动页面)
  12. TS在vue中的应用
  13. 【GZH逸佳君】生财有术:100多位互联网赚钱高手分享的2021年5万字赚钱建议
  14. 如何选择优化器 optimizer
  15. 走出软件作坊之十七-走钢索的人
  16. 华米科技再发“芯”品,能否唤起智能穿戴设备生态繁荣?
  17. 732. 我的日程安排表 III
  18. 计算机专业押韵口号16字,创新口号16字押韵创新 鼓励创新的标语
  19. 学生信息结构体数组拷贝和排序(结构体,结构体数组,结构体指针)
  20. 批量修改文件夹/文件名的小技巧

热门文章

  1. MySQL引擎的理解
  2. 【DFS】先简单说说DFS分布式存储系统和fastDFS
  3. Python Flask框架-开发简单博客-项目布局、应用设置
  4. 如何理解空洞卷积(dilated convolution)
  5. 关于西门子软件SIMIT虚拟在环调试的一些问题解决
  6. 如何高效的配置Nginx
  7. [激光原理与应用-43]:《光电检测技术-10》- 激光测距原理、方案与案例分析:TOF VL53L0X模块
  8. 小程序(一)后端项目搭建
  9. 淘宝获得商品详情高级版API调用示例
  10. Tomcat HTTP的端口号和redirectPort(重定向)端口号