数据结构与算法分析

韦斯 (Mark Allen Weiss)

出版时间

2016-02-29

ISBN

9787111528395

评分

★★★★★

标签

编程

书籍介绍
这是一本把「算法分析」而非「数据结构」放在主角位置的书。作者的核心主张是:好的程序设计必须建立在对运行时间的精确估算之上,掌握数据结构只是起点,懂得如何评估与比较不同实现的效率才是关键。书中用最大子序列和、树的结构等例子,手把手演示如何从输入规模N出发推导运行时间,让抽象的复杂度变得可计算、可比较。它覆盖贪婪、分治、动态规划、回溯等设计技巧,也深入摊还分析、红黑树、伸展树等高级主题,广度与深度兼备。不过读者反馈显示,它并不适合零基础或只想速成的读者,部分章节笔触简略、翻译生硬,需要配合查阅资料才能真正吃透。适合有一定编程基础、希望系统建立算法分析思维的读者。
作者简介
Mark Allen Weiss,1987年在普林斯顿大学获得计算机科学博士学位,师从Robert Sedgewick (师从Knuth),现任美国佛罗里达国际大学计算与信息科学学院教授。他曾经担任全美AP(Advanced Placement)考试计算机学科委员会的主席(2000-2004)。他的主要研究方向是数据结构、算法和教育学。
AI导读
核心看点
  • 经典教材,涵盖ADT、算法分析及高级数据结构
  • 深入讲解贪婪、分治、动态规划等算法设计技巧
  • 通过C语言实现,强调程序效率与运行时间估算
读者共识
  • 内容全面且深入,是数据结构领域的权威著作
  • 理论性强,部分章节阅读门槛高,略显枯燥
  • 适合系统学习,面试前翻阅效果优于速成书
精彩摘录
  • "数据抽象类型(ADT)是一些操作的集合。抽象数据类型是数学的抽象;在ADT的定义中根本没有涉及如何实现操作的集合。这可以看成模块化设计的扩充。"
  • "对表的操作可以用数组来实现。但是需要对表的大小的最大值进行估计,通常需要估计得大一些,会浪费大量的空间。这是严重的局限,特别是存在许多未知大小的表的情况下。所以简单数组一般不用来实现表这种结构。"
  • "任何表的形式都能实现栈。"
  • "队列的基本操作时入队,它是在表的末端插入一个元素,还有出队,它是删除在表开头的元素。 队列一般被用于处理用概率方法计算用户排队预计等待时间,等待服务的队列。诸如此类的问题被称为排队论。"
  • "算法分析评估里面的N是代表输入数据的规模 对于大量数据的输入,链表的线性访问时间太慢,不宜使用。树这种数据结构的运行时间平均为O(log N)。树的一种自然的定义方式是递归方法。"
  • "具有相同父亲的节点为兄弟(sibling).一个树的深度等于它的最深树叶的深度,该深度总是等于这棵树的高度。 树节点的定义:将灭个节点的所有儿子都放在树节点的链表中。"
  • "树有很多应用。最流行的用法之一就是UNIX,VAX/VMS和DOS在内常用操作系统的目录结构。严格来说UNIX文件系统不是树,是类树(treelike)。"
  • "二叉树有许多与搜索无关的重要应用。主要用途之一就是在编译器设计领域。"
目录
出版者的话
前言
第1章 引论1
1.1 本书讨论的内容1
1.2 数学知识复习2

显示全部
用户评论
不错的一本入门书,但是一定要的吧算法都是用自己的理解实现好几遍哦。
为了面试 竟然花了两天看完了 这本书好就好在有具体的java实现 当然能看这么快也是因为之前了解过相关的东西 当作是一种复习 少一星是因为这个醉人的翻译
从一个博主那里看到这本书的,然后买来看,发现很难阅读。
读起来很别扭
前前后后,花了一个多月,总算把它啃完。总的来说,这本近400页的书还是很不错,比国内很多本科教材好多。佩服作者。看是看完了,但是很多内容还有待消化,尤其是后面的一些内容。还需要很长一段时间反嚼。比较烧脑。
翻译得真是晦涩难懂....心好累....
周末翻了翻手里的这版(2004)想找些定义,发现翻译的是真烂…
这本书只看代码,不能看内容,翻译的水平太低
翻译得像💩
推荐直接看英文原版,为什么可以翻译的这么烂。
下载
收藏