细节-不可忽视的要素.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
IOI2004 国家集训队论文 李锐喆 细节——不可忽视的要素 广东北江中学 李锐喆 【关键词】细节 时间复杂度 算法 【摘要】一个再好的算法,如果在细节处理上不当,也会成为一个“垃圾算法”。 但是人们往往在重视算法整个宏观实现的时候,却往往忽略了一些细节上的东 西。本文通过列举细节处理优劣对算法实现的影响,以及分两个方面来阐述细节 处理优劣对算法时间复杂度的影响,并举了三个比较典型的例子,旨在强调这个 往往会 人忽视的细节。 【目录】 一、引论 2 二、基本不影响算法时间复杂度的细节处理 2 〖例1〗线性表维护 2 三、影响到算法时间复杂度的细节处理 5 〖例2〗银河英雄传说(NOI2002 第一试第一题) 5 〖例3〗铁路 7 四、总结 10 参考文献】 10 参考程序】 10 〖例1〗线性表维护 10 第1 页 共17 页 IOI2004 国家集训队论文 李锐喆 【正文】 一、引论 在程序设计中,算法是最核心的部分,往往一个优秀的算法能够取得比其他算法好的多 的效率,但是在追求更好的算法的时候,我们往往会忽视算法中的一些细节处理。 在很多时候,我们自认为用到了最优的算法,但效果往往不尽如人意,为什么呢?细节! 往往是细节上的一些瑕疵,导致算法的关键地方时间效率低下,甚至导致算法的时间复杂度 远远高于正常的情况,最为严重的后果是导致整个算法的错误。 所以,我们说,细节在程序设计中是相当重要的。借用哲学原理来说,细节是算法这个 整体的关键部分,而这个关键部分往往会对算法这个整体的性能状态起决定作用。按照对算 法的影响的性质和程度,我把细节分为这几种情况: 1. 基本不影响算法的时间复杂度的细节处理。这类细节处理对时间复杂度没有根本性 的影响,仅仅对时间复杂度的系数产生影响。 2. 影响到算法的时间复杂度的细节处理。这类细节相当隐蔽,往往不为人所注意。但 是这种细节对算法的影响相当大,处理得好与处理得不好往往会使程序的时间效率 有质的区别。 3. 影响到算法正确或错误的细节处理。这类细节影响最大,在竞赛中很多选手在某些 题目中已经找到解决方法却不能通过全部测试数据,往往就是这类的细节处理得不 当导致。 第三种情况大家都肯定感受颇深,要讲的话也必然是长篇大论,这里就不再赘述了。下 面,我们主要对前两种情况分别进行分析讨论。 二、基本不影响算法时间复杂度的细节处理 这类细节对算法影响不算太大,但往往在关键的时候,时间复杂度的系 的大小对算法 的效率也是有比较明显的影响的。例如对于某个细节,用方法A 来处理的时间复杂度为O(n) , 而方法B 来处理的时间复杂度为O(2n) (这里为了方便描述,在复杂度式中加入不需要加的 系数),如果用方法A 来处理整个算法的时间消耗为1s,那么用方法B 来处理整个算法的时 间消耗就为2s !因此,尽可能地优化细节处理,从而使算法的时间复杂度的系数降低到一个 比较低的程度。 下面我们通过一个例子来看看对这类细节的处理: 〖例1〗线性表维护 给出一个以字符串为数据类型的线性表,以及相应的若干个维护操作的规则,编写一个 程序,模拟线性表的维护操作。 定义一个浮动指针,指向要处理的线性表元素。 定义四种对线性表的操作: 操作1:插入。在线性表末尾插入数据。 操作2:移动指针。把浮动指针向后移若干个单位。 操作3:删除。删除从浮动指针所指元素开始的若干个元素。 操作4:输出。输出浮动指针所指位置的元素。 为了便于程序实现,程序从line.in输入数据,并把输出结果输出到 line.out中。输入 第2 页 共17 页 IOI2004 国家集训队论文 李锐喆 数

文档评论(0)

山丹丹 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档