算法数据结构程序

上传人:自*** 文档编号:80711902 上传时间:2019-02-19 格式:DOC 页数:3 大小:58.80KB
返回 下载 相关 举报
算法数据结构程序_第1页
第1页 / 共3页
算法数据结构程序_第2页
第2页 / 共3页
算法数据结构程序_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《算法数据结构程序》由会员分享,可在线阅读,更多相关《算法数据结构程序(3页珍藏版)》请在金锄头文库上搜索。

1、算法 + 数据结构 = 程序-评数据结构、算法与应用-C+语言描述记得Pascal之父、结构化程序设计的先驱Niklaus Wirth最著名的一本书,书名叫作算法 + 数据结构 = 程序,算法与数据结构之于程序设计的重要性不言自明。那么,什么是算法?什么是数据结构?什么又是程序呢?我们先从阐明大家最为熟悉的程序的概念入手。程序是计算机指令的某种组合,控制计算机的工作流程,完成一定的逻辑功能,以实现某种任务;再来看什么是算法,算法是程序的逻辑抽象,是解决某类客观问题的数学过程;最后我们来看一看数据结构又是什么呢?在这里,数据结构具有两个层面上的涵义-逻辑结构和物理结构:客观事物自身所具有的结构特

2、点,我们将其称之为逻辑结构。如家族谱系是一个天然的树型逻辑结构。而逻辑结构在计算机中的具体实现则称之为物理结构。如树型逻辑结构是用指针表示还是使用数组实现。仔细体会一下,就会发现算法与数据结构间的紧密性。用一个较为贴切的例子来形容,若把数据结构喻为建筑工程中的建筑设计图,那么算法就是工程中的施工流程图。数据结构与算法呈相互依托的关系,恰当的确立了问题的结构,问题的解决才能根据确立的层次结构选择合适的解决方法。因此任何讲解数据结构的书都不可能撇开算法,单单介绍数据结构,反之亦然。下面,我们就来看看IEEE 97Booth教育奖获得者Sartaj Sahni是如何处理数据结构、算法和程序他们三者之

3、间的关系的吧!一般来说,计算机专业著作有两种基本写作方式:一种是教材,一种是百科全书。本书是按照大学教材的结构来写的,然而令人惊讶的是本书的内容是如此的丰富,以至于同样可以将它看作是一本关于数据结构与算法的大全。显然,这本书并不适合初学,将它作为数据结构进阶学习的第二本书是恰当的。这本书最为显著的特点是特别注重应用,我们很快就会看到这一点。首先,我们来看一看数据结构、算法与应用-C+语言描述这本书的组织结构。书由三个部分组成:预备知识、数据结构和算法设计。第一部分 预备知识 回顾了具备面向对象特性的C+语言的重要特征。因为不是在介绍C+语言,这里的回顾和前提引入直接切入到了C+中许多重要而又易

4、被忽略以至于显得较为模糊的概念。参数传递、函数返回、模板、递归还有操作符重载等等,如若在以前学习C+时,对其理解不是十分深入的话,你是否清楚在什么样的情形下函数返回引用更为合适呢?随后探讨程序时空复杂性的分析、测量与渐进符号(、),为后面的算法分析内容建立基础。较为特别的是,作者提早在第一部分就讲述了程序设计中的一些基本设计方法:简单的排序与搜索算法、多项式求值和矩阵运算。这样做是要冒风险的(对基础差一些的读者来说就会觉得难度较大),不过作者深厚的写作功力使其显得自然而又恰如其分。第二部分 数据结构 是本书的主体,阐述线性表、数组、矩阵、堆栈、队列、跳跃表、散列、二叉树、优先队列、竞赛树、搜索

5、树还有图。与一般的数据结构书不同,这里采用了四种不同的数据描述方法:公式化描述、链接描述、间接寻址和模拟指针。随着学习的深入,你很快就可以发现相同的逻辑结构,其物理结构的实现竟是如此的不同。而不同的物理结构又各自存在着自己的优缺点,这是由不同的物理结构的自身特点所决定的。例如:使用数组实现的线性表可直接存取元素,然而元素插入与删除的效率却特别低;而若线性表采用链表描述,则正好与顺序表的优缺点相反。若欲博采众长,就必须设计或是选择更为复杂的数据结构,这又为算法设计带来了更多的麻烦。而且,整体结构和具体实现会显得不是那么清晰与自然,甚至会变得非常的难于理解。学习数据结构的诀要就在于掌握基本的数据结

6、构,在解决现实问题时选择合适的结构或设计更为恰当的模型,然后根据确立的结构特性编写出算法。我们前面提到的关于本书最为独特的地方就在于它特别强调应用。这一特色,就表现在这第二部分中。书中给出了大量来自不同领域的应用:布线路由、元件折叠、电路板排列、LZW压缩编码、迷宫问题、工厂仿真、货箱装船、LPT调度、货郎担问题 这些具体问题的实现不仅使学习充满了乐趣,而且所选择出来的典型实例对于我们解决现实问题具有很强的指导作用。同时,这些经典实例的实现能够大幅度提高我们阅读和编写复杂的大型程序的能力。我们的程序设计能力和算法思维能力的提高,正是建立在对基本数据结构和算法原理的理解以及阅读中、大型程序源代码

7、的基础上的。本书的第三部分侧重于计算机算法的分析与实现。书中提供了五种基本的算法设计方法:贪婪算法、分而治之算法、动态规划、回溯和分支定界。由于这里已经是书末,读者的基础知识已经相当的充实,故而本部分也是本书最难的地方。算法的定义采用了正式的数学定义,有算法引论或组合数学基础的读者会更容易理解一些。正如文前所述,这里更强调的是问题的解决过程,合适的算法将可能会使解决问题的复杂度降低几个数量级。如顺序搜索与折半搜索、冒泡排序与快速排序性能上的差异足以决定解决问题的可能性。在这里,作者同样强调如何选择合适的算法设计方法,建立起针对特定的实际应用的解决方法。找伪币、找零钱、分金块、迷宫老鼠、棋盘覆盖

8、等丰富而生动的事例中蕴含着深刻的算法思想,同样的问题利用不同的算法设计方法通过不同途径得到解。正如前面所述,算法的确定依赖于数据结构的选择,数据结构的选择制约于算法设计的复杂程度-算法 + 数据结构 = 程序。数据结构与算法方面的好书很多,我在这里没有作一一介绍,而是着重推荐了一些经典著作:计算机编程艺术The Art of Computer Programming(Volume I III) (第1卷 基本算法、第2卷 半数值算法、第3卷 排序与查找) 国防工业出版社 数据结构的开拓者D.E.Knuth高德纳编著的计算机科学发展史上的不朽之作。第1卷 基本算法 介绍计算机程序设计的基本算法,

9、包括基本的编程概念和技术以及信息结构-机内信息的表示、数据元及其处理的结构关系;第2卷 半数值算法 介绍随机数和算术,提供了计算机编程和数值分析之间的丰富接口;第3卷 排序与查找 介绍排序和查找的最权威的经典技术,扩充了第1卷的数据结构,以处理大小型数据库及内外部存储。本书偏重分析技术,采用汇编语言描述算法,是一本本学科最经典最权威的百科全书,适合于从事数据结构与算法研究的专家阅读。算法 + 数据结构 = 程序科学出版社 Pascal之父Niklaus Wirth著 一本简洁、清晰具有深刻内涵的小册子。介绍了许多巧妙的程序设计技术,书中还完成了一个简单的程序设计语言的实现,真不愧为世界级的编译器设计专家。这本书的难度也很大,将它作为数据结构高级读物更好一些。数据结构与算法 美A.V.阿霍,美J.E.霍普克罗夫特著 看看作者名字就知道这本书的水平了,不过这本书现在很难找到了。数据结构与算法苏运霖著 中南工业大学出版社 作为计算机编程艺术的中文译者,苏运霖先生的这一本专著亦采用百科全书式写法,内容相当艰深,对数学功底要求特别高。数据结构与算法分析(C+版、JAVA版) Shaffer著 电子工业出版社 讲解清晰易懂、内容丰富,适于自学。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号