第一章 数据结构和算法 (1)

问题的引入 、本书的目的、本书主要讲解的内容、算法分析、本章内容:

得克萨斯州达拉斯市方圆500英里之内 有多少个城市 的人口超过25万? 

一个公司里 有多少人 每年的年收入  超过10万美元?

用不超过1000英里长的电缆 是否能把 所有的电话用户 都连接起来?

现在就正确回答诸如这样的问题 是不可能的,因为 这里还没有给出  回答这些问题所必须要了解的信息。(有了这些信息后,而且还) 必须(要) 以能够及时找到答案的方式

  来组织信息,才能满足我们的需要。

信息的表示是计算机科学的基础。大多数计算机程序的主要目标与其说是完成运算,不如说是存储信息和尽快地检索信息(个人看法:现在的计算机程序 ,更多的时候是在 

储和检索信息 ,而不是计算)。因此,研究 数据结构和算法 就成了 计算机科学的核心问题。本书的目的  就是  帮助读者理解 怎样组织信息,以便支持高效的数据处理。

本书有三个主要目的。第一个目的是介绍常用的数据结构,这些 数据结构形成了一个程序员的基本数据结构 工具箱。对于许多问题,工具箱里的数据结构才是理想的选择。

第二个目的是引入并加强“权衡’的概念,每一个数据结构(针对相关的操作,如:遍历,插入,查询等)都有其相关的代价和效益的 权衡。本书通过列举出不同的数据结构,并指出它们应用于实际问题时的代价和效益来讨论“权衡”的概念。

第三个目的是 讲解如何评估一个数据结构或算法的有效性。(个人看法:有效性是指 一个数据结构针对某个具体的问题是否是最合适的)只有通过这样的分析,才能确定工具箱中的哪一个数据结构对于一个新问题是最合适的。这种技术也使得程序员能够判断自己或者别人发明的新数据结构的价值。

(个人看法: 本书首先告诉你常用的数据结构有哪些,然后告诉你这些数据结构的代价和效率的权衡是怎样的,最后告诉你  怎样来评价一个数据结构或算法 对某个具体的问题是不是最合适的,在评价过程中应该会用到权衡的概念。)


对于一个问题通常有多种解法,应该选择哪一种呢?(个人看法:选择的标准是下面两个目标,应尽量满足下面的两个目标)计算机程序设计的核心有两个目标(有时候它们相互冲突):

1、设计一种容易理解、编码和调试的算法;(个人看法:方便程序员)

2、设计一种能有效利用计算机资源的算法;(个人看法:方便计算机)

在理想情况下,最终的程序都能实现这两个目标,有时把这样的程序称为是‘完美的’ 。 本书给出的算法 和 程序实例在这种意义上讲是趋于完美的。 与目标1有关的问题不是本书的目的,它们主要涉及到的是软件工程原理;本书主要讲的是与目标2有关的问题。

怎样度量效率呢?第3章将给出 估算  一种算法或者一个计算机程序 的效率的方法,称为算法分析。算法分析还可以度量一个问题的内在复杂程度。以后的章节中只要介绍算法就会用到算法分析方法。用这种方法可以清楚的看到在解决同一个问题时不同算法在效率上的差异。

本章通过 提出 与 选择和使用数据结构相关的话题,为后面的内容做准备。本章将先审视  一个设计者为所要完成的任务 选择 一个合适数据结构   的过程,然后讨论在程序设计中如何进行抽象,最后将探索问题、算法和程序三者之间的关系。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值