- 39
- 0
- 约2.73万字
- 约 28页
- 2018-08-25 发布于江西
- 举报
鄂教版信息技术九下9课程序调试优化算法教案.doc
算法效率与程序优化石家庄二中 李博杰Website: lbj.80.hk在信息学竞赛中,常遇到程序运行超时的情况。然而,同一个程序设计思想,用不同算法,会有不同的运行效率;而即使是同样的算法,由于在代码的细节方面设计有所不同,执行起来效率也会有所不同。当遇到所需时间较长的问题时,一个常数级优化可能是AC的关键所在。下面,我们就从代码细节与算法设计两方面,比较不同程序执行时间的异同,从而选择其中较优的算法,提高程序运行效率。本试验所采用的环境是: CPU Celeron 3.06GHz,内存248M,操作系统Windows XP SP2,程序语言C。编译环境Dev-c++。以下称为1号机。配置略好于NOIP标准测试机CPU 2.0GHz。第一章 各种运算的速度一、基本运算的速度为了增强算法效率的计算准确性,我们采用重复试验20次取平均值的做法。每次试验运行100000000次。基本运行时间,是指在准备计算的运算复杂度之外,只包括循环控制变量的加减与比较所消耗的时间。要从实际运行时间中减去基本运行时间,才是这种运算真正的运行时间,称为净运行时间。#includestdio.hmain(){ int i,j; double a,b,sum=0; for(j=0;j20;j++) { //此处添加随机数产生 a=clock(); for(i=0;i100000000;i++);//此处添加运算 b=clock(); printf(%lf\n,b-a); sum+=b-a; } printf(ans = %lf,sum/20.0); getch();}运行平均时间是:202.3ms。(1)赋值运算净运行时间0.8ms,与基本运行时间202.3ms相比,可忽略不计,故以后将赋值运算作为基本运行时间的一部分,不予考虑。(2)加法运算 产生随机数: x=rand();y=rand();循环内加法:t=x+y;下面的各种简单运算只是更改运算符即可,不再写出代码。净运行时间41.45ms,即:在1s的时限中,共可进行 (1000-202.3)/ 41.45*10^8=1.9*10^9次加法运算,即:只通过循环、加法和赋值的运算次数不超过1.9*10^9.。而应用+=运算,与普通加法时间几乎相同,所以+=只是一种方便书写的方法,没有实质效果。同样的,各种自运算并不能提高效率。(3)减法运算 净运行时间42.95ms,与加法运算基本相同。可见,在计算机内部实现中,把减法变成加法的求补码过程是较快的,而按位相加的过程占据了较多的时间,借用化学中的一句术语,可以称为整个运算的“速控步”。当然,这个“速控步”的运行速度受计算机本身制约,我们无法优化。在下面的算法设计中,还会遇到整个算法的“速控步”,针对这类情况,我们要对占用时间最多的步骤进行细心优化,减少常数级运算次数。(4)乘法运算净运行时间58.25ms,明显比加减法要慢,但不像某些人想象的那样慢,至少速度大于加减法的1/2。所以在实际编程时,没有必要把两个或三个加法变成乘法,其实不如元素乘常数来得快。不必“谈乘色变”,实际乘法作为CPU的一种基本运算,速度还是很快的。以上四种运算速度都很快,比循环所需时间少很多,在普通的算法中,每个最内层循环约含有4-5个加、减、乘运算,故整个算法的运行时间约为循环本身所需时间的2倍。(5)除法运算净运行时间1210.2ms,是四种常规运算中最慢的一种,耗时是加法的28倍,是乘法的21.5倍,确实如常人所说“慢几十倍”,一秒的时限内只能运行8.26*10^7次,不足一亿次,远大于循环时间。所以,在计算时应尽量避免除法,尤其是在对时间要求较高的内层循环,尽量不安排除法,如果整个循环中值不变,可以使用在循环外预处理并用一个变量记录,循环内再调用该变量的方法,可以大大提高程序运行效率。(6)取模运算净运行时间1178.15ms,与除法运算速度几乎相当,都非常慢。所以,取模运算也要尽量减少。在大数运算而只要求求得MOD N的值的题目中,应尽量利用数据类型的最大允许范围,在保证不超过MAXINT的前提下,尽量少执行MOD运算。例如在循环数组、循环队列的应用中,取模运算必不可少,这时优化运算便十分重要。可利用计数足够一定次数后再统一MOD,循环完后再MOD,使用中间变量记录MOD结果等方法减少次数。在高精度计算中,许多人喜欢边运算边整理移位,从而在内层循环中有除、模运算各一次,效率极低。应该利用int的数据范围,先将计算结果保存至当前位,在各位的运算结束后再统一整理。以下是用统一整理法编写的高精度乘法函数,规模为10000位。int a[10000]={0},b[10000]={0},c[10000]={0};voi
您可能关注的文档
- 部编人教版语文八年上册第二单元《写作学写传记》word配套教案含教学反思教学设计说课稿.doc
- 部编人教版语文八年上册第二单元《综合性学习人无信不立》word配套教案含教学反思教学设计说课稿.doc
- 部编人教版语文八年上册第五单元《写作说明事物要抓住特征》word配套教案含教学反思教学设计说课稿.doc
- 部编人教版语文八年上册第六单元《综合性学习身边的文化遗产》word配套教案含教学反思教学设计说课稿.doc
- 部编人教版语文八年上册第六单元《课外古诗词诵读》word配套教案含教学反思教学设计说课稿.doc
- 部编教材一年级语文册第七单元教学设计含教学反思学案说课稿案例.doc
- 部编教材一年级语文册第八单元教学设计含教学反思学案说课稿案例.doc
- 部编教材一年级语文册第六单元教学设计含教学反思学案说课稿案例.doc
- 部编教材一年级语文册第四单元教学设计含教学反思学案说课稿案例.doc
- 部编本一年级下册语单元知识点小结(1——8单元全)含教学反思设计.doc
- 安徽省安庆市潜山市部分学校2025-2026学年七年级下学期阶段学情自测数学试题-普通用卷.docx
- 2026《微型无人机的设计基础综述》2600字.docx
- 安徽六安市金安区2025-2026学年八年级上学期2月期末物理试题-普通用卷.docx
- 2026《五菱汽车公司经营者股权激励实施成效及其启示》9700字.doc
- 北京市第一零九中学2026届高三下学期开学考试数学试题-普通用卷.docx
- 北京海淀实验中学2026届高三下学期数学开学检测试题-普通用卷.docx
- 2026《五菱汽车公司融资模式及融资风险分析》8700字.doc
- 2026《五菱汽车公司物流成本控制研究》文献综述开题报告(含提纲)3800字.doc
- 2026《五菱汽车公司薪酬改革问题研究》开题报告(文献综述)4200字.doc
- 2026《物流企业反内卷的战略转型研究—以顺丰控股为例》13000字.doc
最近下载
- 《GBT19000-2000-质量管理体系基础和术语》.pdf
- 常见阴道炎的规范化诊断流程指南(2025).pptx VIP
- 2024-2025浙教版科学初中七年级下册教学计划 .docx VIP
- 学堂在线 雨课堂 学堂云 医学科研设计 章节测试答案.docx VIP
- 消防员个人安全行动规程.pptx VIP
- 学堂在线 雨课堂 学堂云 《资治通鉴》导读 章节测试答案.docx VIP
- 宣贯培训(2026年)《JTT 329-2025公路桥梁预应力钢绞线用锚具、夹具和连接器》.pptx VIP
- 有创血压及中心静脉压监测.pptx VIP
- 全球绿色航运发展报告(2024-2025).pdf
- 浅议抽水蓄能电站建设财务管理.pdf VIP
原创力文档

文档评论(0)