Data Structures and Algorithm Analysis in Java

Mark A. Weiss

出版社

Pearson

出版时间

2011-11-18

ISBN

9780132576277

评分

★★★★★
书籍介绍
Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amount of efficiency. Readers should have some knowledge of intermediate programming, including topics as object-based programming and recursion, and some background in discrete math. As the speed and power of computers increases, so does the need for effective programming and algorithm analysis. By approaching these skills in tandem, Mark Allen Weiss teaches readers to develop well-constructed, maximally efficient programs in Java. Weiss clearly explains topics from binary heaps to sorting to NP -completeness, and dedicates a full chapter to amortized analysis and advanced data structures and their implementation. Figures and examples illustrating successive stages of algorithms contribute to Weiss’ careful, rigorous and in-depth analysis of each type of algorithm. A logical organization of topics and full access to source code complement the text’s coverage.
AI导读
核心看点
  • 定位CS2与算法分析之间,兼顾编程与算法分析
  • 用Java实现数据结构,强调代码可运行与效率
  • 涵盖栈、队列、树、堆、哈希表等核心结构
适合谁读
  • 具备Java基础、离散数学背景的计算机专业学生
  • 希望深入理解数据结构底层实现的初级程序员
  • 准备求职面试,需强化算法思维与编码能力的读者
读前提醒
  • 建议配合官方勘误表阅读,避免代码错误误导
  • 务必动手实现书中数据结构,勿仅停留在阅读
  • 需掌握面向对象编程及递归,否则阅读吃力
读者共识
  • 图示清晰,讲解透彻,是入门数据结构的绝佳教材
  • 相比算法导论更侧重实现,有助于建立编程自信
  • 部分代码存在错误,翻译版本语言可能略显生硬

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

精彩摘录
  • "数据抽象类型(ADT)是一些操作的集合。抽象数据类型是数学的抽象;在ADT的定义中根本没有涉及如何实现操作的集合。这可以看成模块化设计的扩充。"
  • "对表的操作可以用数组来实现。但是需要对表的大小的最大值进行估计,通常需要估计得大一些,会浪费大量的空间。这是严重的局限,特别是存在许多未知大小的表的情况下。所以简单数组一般不用来实现表这种结构。"
  • "任何表的形式都能实现栈。"
  • "队列的基本操作时入队,它是在表的末端插入一个元素,还有出队,它是删除在表开头的元素。 队列一般被用于处理用概率方法计算用户排队预计等待时间,等待服务的队列。诸如此类的问题被称为排队论。"
  • "算法分析评估里面的N是代表输入数据的规模 对于大量数据的输入,链表的线性访问时间太慢,不宜使用。树这种数据结构的运行时间平均为O(log N)。树的一种自然的定义方式是递归方法。"
  • "具有相同父亲的节点为兄弟(sibling).一个树的深度等于它的最深树叶的深度,该深度总是等于这棵树的高度。 树节点的定义:将灭个节点的所有儿子都放在树节点的链表中。"
  • "树有很多应用。最流行的用法之一就是UNIX,VAX/VMS和DOS在内常用操作系统的目录结构。严格来说UNIX文件系统不是树,是类树(treelike)。"
  • "二叉树有许多与搜索无关的重要应用。主要用途之一就是在编译器设计领域。"
作者简介
Mark Allen Weiss is Professor and Associate Director for the School of Computing and Information Sciences at Florida International University. He is also currently serving as both Director of Undergraduate Studies and Director of Graduate Studies. He received his Bachelor’s Degree in Electrical Engineering from the Cooper Union in 1983, and his Ph.D. in Computer Science from Princeton University in 1987, working under Bob Sedgewick. He has been at FIU since 1987 and was promoted to Professor in 1996. His interests include data structures, algorithms, and education. He is most well-known for his highly-acclaimed Data Structures textbooks, which have been used for a generation by roughly a million students. Professor Weiss is the author of numerous publications in top-rated journals and was recipient of the University’s Excellence in Research Award in 1994. In 1996 at FIU he was the first in the world to teach Data Structures using the Java programming language, which is now the de facto standard. From 1997-2004 he served as a member of the Advanced Placement Computer Science Development Committee, chairing the committee from 2000-2004. The committee designed the curriculum and wrote the AP exams that were taken by 20,000 high school students annually. In addition to his Research Award in 1994, Professor Weiss is also the recipient of the University’s Excellence in Teaching Award in 1999 and the School of Computing and Information Science Excellence in Teaching Award (2005) and Excellence in Service Award (2007).
用户评论
好读,对数据结构的介绍比算法导论详细,有implementation
我觉得里面给的code都不太对,至少AVL姐按照他给的implement不出来。。。。。还有CS课本里的proof怎么跟数学的proof读着像两种不同的genre???
java版本里错误的代码不少
入门绝佳教材,把各种数据结构很清晰的用图示和步骤呈现出来,至少从概念来说,讲明白了
书里有很多出错,详见这个Errata:http://users.cis.fiu.edu/~weiss/dsaajava3/errata.html
我觉得里面给的code都不太对,至少AVL姐按照他给的implement不出来。。。。。还有CS课本里的proof怎么跟数学的proof读着像两种不同的genre??? @2012-04-29 05:19:36
是一本好书,但是自己只是粗略的看了一遍,也尝试实现了里面的就给常见的算法。课后习题大部分都没有做,难度比较大,后面要花时间做一些课后题。如名字所示,里面有很多对算法进行的数学分析。每一章最后的Reference也是不错的资源,也需要花时间看了。所以现在自己其实不算看完一遍这本书,只是翻了一遍,离看完还需要很长时间以及实践。
下载
收藏