数据结构与算法分析

Mark Allen Weiss (维斯)

出版时间

2004-01-01

ISBN

9787111127482

评分

★★★★★

标签

编程

书籍介绍
这本书最见功力的地方,在于它不满足于教会你'怎么用',而是逼你搞清楚'为什么这样用'。作者把算法的运行时间当成一门可以精确估算的学科来教:同样是处理海量数据,数组的线性访问时间太慢,链表救不了场,而树的平均运行时间能压到O(log 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.2 数学知识复习
1.2.1 指数
1.2.2 对数

显示全部
用户评论
简单易读懂的一本算法和数据结构书。如果你只想读一本算法书,那就读这本。
上数据结构课的时候买的, 一直没有完整看, 找实习的时候翻一翻, 校招的时候翻一翻
看得其实是英文版,比算法导论比起来有信心的多。
这个厚度的书覆盖面如此广和深确实很见作者功力,但仍难免经常语焉不详。不得不说在让行文尽可能晦涩难懂这个目标的达成上翻译同学又立了大功。
lesson
介绍数据结构的最好教材
哈哈哈哈哈标记一下
趁着考研考数据结构看完了,不能说写的多么传神,但是也还不错,习题有难度,参考资料翔实,就我看过的来说仅次于邓俊辉的那本吧
当年噩梦,那时候C语言还不是骂人
需要再多读几遍
下载
收藏