第一章 介绍

来源:互联网 发布:手机淘宝换货流程 编辑:程序博客网 时间:2024/05/29 14:50

第一章 介绍

12岁那年我和我的哥哥一起学习弹钢琴。每周我们都要到老师家去上课,当我们中的一个在上课时另一个人需要在客厅等着。幸运的是,老师每次都在咖啡桌上安排一些游戏帮我们打发等待的时间。我记得其中一个游戏里有一小片插上钉子的木板。当时我并不知道,但这个游戏的确可以用来对数据结构和算法做初步的介绍。

游戏规则是这样的:除了一个蓝色的夹子外,其他夹子都是白色的。刚开始游戏时拿掉其中一个白色夹子,这样就有了一个空位,然后每次跳过一些夹子就拿掉一个。直到最后只剩下一个夹子,或者剩下的夹子都无法再跳过(译者注:类似约瑟夫环问题)。游戏的目的是通过跳过夹子保证蓝色的夹子是最终剩下的那个。根据游戏的规则,成功达成目标的玩家被称为“天才”,这是完成此游戏所能获得的最高评价,而其他一些评价级别则根据游戏的不同结果来判定。对于我来说,只要我在玩游戏时老师家的小猫Clara能够安安静静的呆着,而不是试图从沙发的各个角落用爪子突袭我,从而让我能顺利的完成一盘游戏我就很满足了。我想,对这个结果感到满足表明我拥有着一种“常识”。

记得在玩这个游戏时我在思考一定有一种可确定的方法可以每次都让蓝色的夹子最后剩下。我在寻找的是一种算法。算法是定义良好的用来解决问题的步骤。直到若干年之后我真的实现了解决夹子问题的算法。在大学的人工智能课上我决定用LISP来解决这个问题。为了解决这个问题,我用多种数据结构来表示游戏中的信息。数据结构是组织信息的一种概念,它们和算法关系很紧密,因为很多算法为了获得较高的效率需要选择恰当的数据结构。

通常人们以松散的方式处理信息,比如板子上的钉子,笔记本中的便条,或者文件夹中的图片。然而用计算机处理信息需要将数据规则的组织起来。此外,周密地计划要做的事情对我们是绝对有帮助的。数据结构和算法帮助我们完成这些任务。简单的说,它们能帮助我们开发出这样的程序,用一个词来表达——优雅。作为软件工程师,很重要的一点是记住我们不仅仅只是对编程语言和开发工具熟悉,开发出优秀的软件是一项技艺。想要成为大师很重要的一点是需要对数据结构和算法有很好的理解。

 

第一章 介绍 

    1.1 数据结构简介

    1.2 算法简介

    1.3 小酌软件工程

    1.4 如何使用本书

 

PS:

1、此书(Mastering Algorithms with C)译稿版权归本人(Love_Lei)及好友(bigship)共同所有,未经本人同意谢绝一切转载,并不得抄袭,模仿,盗版!更请大家监督盗版之人!

2、由于本人水平有限,如对译文有任何建议和异议,欢迎大家留言指正,我们共同讨论学习!谢谢!