数据结构与算法分析

[美]Mark Allen Weiss

出版时间

2007-01-01

ISBN

9787115139238

评分

★★★★★
书籍介绍
《数据结构与算法分析:C++描述(第3版)》是数据结构和算法分析的经典教材,书中使用主流的程序设计语言C++作为具体的实现语言。书的内容包括表、栈、队列、树、散列表、优先队列、排序、不相交集算法、图论算法、算法分析、算法设计、摊还分析、查找树算法、k-d树和配对堆等。《数据结构与算法分析:C++描述(第3版)》适合作为计算机相关专业本科生的数据结构课程和研究生算法分析课程的教材。本科生的数据结构课程可以使用《数据结构与算法分析:C++描述(第3版)》第1章~第9章,多学时课程还可以讲解第10章;研究生算法分析课程可以使用第6章~第12章。
AI导读
核心看点
  • 经典教材,涵盖表、树、图等核心数据结构
  • 以C++为语言,深入讲解算法设计与分析
  • 内容精炼,适合作为本科及研究生课程教材
适合谁读
  • 计算机相关专业本科生及研究生
  • 希望系统学习数据结构与算法的程序员
  • 觉得算法导论太厚,寻求简洁替代的读者
读前提醒
  • 翻译质量一般,建议结合英文版或C版阅读
  • 代码实现较少,需动手编写以加深理解
  • C++基础薄弱者,可跳过第一章特性介绍
读者共识
  • 内容全面且简洁,比算法导论更易入门
  • 理论分析透彻,但部分章节代码示例不足
  • 经典之作,适合反复研读并动手实践

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "数据抽象类型(ADT)是一些操作的集合。抽象数据类型是数学的抽象;在ADT的定义中根本没有涉及如何实现操作的集合。这可以看成模块化设计的扩充。"
  • "对表的操作可以用数组来实现。但是需要对表的大小的最大值进行估计,通常需要估计得大一些,会浪费大量的空间。这是严重的局限,特别是存在许多未知大小的表的情况下。所以简单数组一般不用来实现表这种结构。"
  • "任何表的形式都能实现栈。"
  • "队列的基本操作时入队,它是在表的末端插入一个元素,还有出队,它是删除在表开头的元素。 队列一般被用于处理用概率方法计算用户排队预计等待时间,等待服务的队列。诸如此类的问题被称为排队论。"
  • "算法分析评估里面的N是代表输入数据的规模 对于大量数据的输入,链表的线性访问时间太慢,不宜使用。树这种数据结构的运行时间平均为O(log N)。树的一种自然的定义方式是递归方法。"
  • "具有相同父亲的节点为兄弟(sibling).一个树的深度等于它的最深树叶的深度,该深度总是等于这棵树的高度。 树节点的定义:将灭个节点的所有儿子都放在树节点的链表中。"
  • "树有很多应用。最流行的用法之一就是UNIX,VAX/VMS和DOS在内常用操作系统的目录结构。严格来说UNIX文件系统不是树,是类树(treelike)。"
  • "二叉树有许多与搜索无关的重要应用。主要用途之一就是在编译器设计领域。"
作者简介
Mark Allen Weiss 1987年在普林斯顿大学获得计算机科学博士学位,师从著名算法大师Robert Sedgewick,现任美国佛罗里达国际大学计算与信息科学学院教授.他曾经担任全美AP(Advanced Placement)考试计算机学科委员会的主席(2000-2004).他的主要研究方向是数据结构,算法,和教育学.
用户评论
一般
缺少程序,给的分析倒是很详细,略坑。
讲得很细,清晰易懂,但书里的代码也不够多。
翻译很差
Byebye。
比以前看的书清晰多了,但不够通俗简练,需要耐心阅读和理解。涵盖的知识点比较多,示例的程序会比较散、离散数学知识比较多,时间限制下只能循着以前的记忆囫囵吞枣下。手边还有算法第四部和算法导论,刷题、demo难两全…
不如一些国内的教科书,可以作参考补充,不知道是不是翻译的问题。
还行的程度,有段时间看得人头昏脑胀
这本书强烈推荐,和上本书是一起拿到,随便翻了翻觉得上本书代码更详细,就选择了先看上本,没想到这本书才是真的宝藏。这本书也是日均四十页,但这四十页不是说内容少看的快,而是因为收获满满又讲的很清楚所以不难,才看的非常快。 目前只看了前四十页绪论部分,主要是C++基础准备,但里面提到的一些小习惯真的是讲的非常清楚,示例代码也非常清晰,有初看《effective c++》那么惊艳,甚至更好,例如const的用法,《effective c++》也讲的很全,但它是把const所有知识点放到一起讲,有些一下子接收不了,这本书值得反复研磨观看,但入门起来有些困难。但《数据结构与算法分析》这本书是一点点的讲,接收起来就很轻松,一步步指导你什么情况该用什么。
看的最新版本,引入了C++11标准许多的内容。数学分析真的很多,没学离散数学之前可以不看,基础的一些均摊分析和算法时间复杂度分析学会就好了。不过讲的真的很深入浅出,有些地方语句不太通顺,翻译的锅。
下载
收藏