数据结构与算法分析

[美]Mark Allen Weiss

出版时间

2007-01-01

ISBN

9787115139238

评分

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