
2.3 循环的代价
发布日期:2021-05-04 20:16:33
浏览次数:34
分类:原创文章
本文共 1363 字,大约阅读时间需要 4 分钟。
2.3 循环的代价
前面两个小节,我们介绍了三种常用的循环结构。但是对于处理相同的问题,不同的处理方式,所花费的时间和占用的空间都是不同的。我们这章就着重介绍,如何得到一个代码运行花费的时间。
首先,我们写一个比较简单的循环(就不用书本上的例子了)
#include<stdio.h>int main(){ int n,x=1; scanf("%d",&n); for (int i=1;i<=n;i++){ //这就是循环嵌套 for (int j=1;j<=n;j++){ x=(x*3+2)%100;//随便写的 } } printf("%d",x); return 0;}
上面的代码,当我们输入的值为10,100,1000的时候,计算机都能很快的给出答案。
当我们输入100000时:
响应了非常非常久。
那我们怎么的得到代码具体的运行时间呢?
我们在原来的代码上进行如下操作:
#include<stdio.h>#include<time.h>//调用clock()的库int main(){ int n,x=1; scanf("%d",&n); for (int i=1;i<=n;i++){ for (int j=1;j<=n;j++){ x=(x*3+2)%100; } } printf("%d\n",x); printf("%.6f",(double)clock()/CLOCKS_PER_SEC); return 0;}
我们导入time.h的库,调用其中的clock()函数,clock()能够得到整个代码运行开始到结束所用的时间。但是clock()得到cpu时间,并不是传统意义的秒,所以我们还要/CLOCKS_PER_SEC,将其转化为秒作单位。
CLOCKS_PER_SEC的值对与不同的编译器是不一样的,比如,linux C中,它是1000000,在VC6中,它是1000。
接下来我们运行这个代码,输入100
唉?怎么花费了三秒钟这么多!
事实上,clock()是会把你键盘输入花费的时间一起计算在内的,所以要怎么解决这个问题呢?
书上提供了一种方法:
在windows的命令行下执行echo x(输入的值)|abc(程序的文件名),操作系统会自动把x输入。
(操作系统不是很熟练T_T)
事实上,像这样,直接对要输入的内容欲赋值也是可行的:
#include<stdio.h>#include<time.h>int main(){ int n,x=1;// scanf("%d",&n); n=1000; for (int i=1;i<=n;i++){ for (int j=1;j<=n;j++){ x=(x*3+2)%100; } } printf("%d\n",x); printf("%.6f",(double)clock()/CLOCKS_PER_SEC); return 0;}
事实上,如果你忘记了c++自带的计时器是怎么运用的也不要紧。粗略的计算一下代码的时间复杂度,然后gcc编译器一秒钟大概是做一亿次操作,通过这个也可以得到代码运行的大概时间。
(不会有人不会算时间复杂度的吧,不会吧不会吧)
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月03日 18时46分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【C++系列】C++中的基础语法总结
2019-03-04
广东iOS企业开发者签名有没有好的推荐?
2019-03-04
iOS企业签名掉签会提前知道的么?
2019-03-04
苹果企业签名首要考虑的真的是价格因素么?别傻了
2019-03-04
深度!苹果企业签名掉签的真正原因
2019-03-04
关于scanf函数在VS中使用的问题
2019-03-04
操作符初识
2019-03-04
C语言 - 计算n的阶乘(n!)
2019-03-04
c编程常见错误-C允许初始化列表出现多余的逗号 不影响
2019-03-04
c编程常见错误-函数声明没有参数类型声明
2019-03-04
c编程常见错误-函数调用没写括号
2019-03-04
C++类与对象
2019-03-04
打造微信小程序之人脸属性(ubuntu16.04+tensorflow)
2019-03-04
计算机网络复习笔记----杂记
2019-03-04
计算机网络复习笔记---网络层
2019-03-04
JavaScript按值传递与按共享传递
2019-03-04
pip源
2019-03-04
MongoDB复制集安全认证
2019-03-04
设置eclipse工作区的编码方式和设置jsp文件的编码方式
2019-03-04
IDEA配置maven环境
2019-03-04