每个程序员的力量都在于他的知识。是的,谷歌搜索的能力也不是最后的,但无论如何,必须有一定的知识,在此基础上形成开发人员的思维方式。这些知识越深入,程序员就能想出越有趣的解决方案。 这种“基础”的组成部分之一是数据结构和算法。你怎样才能扩展你在这个方向上的知识呢?作为一种选择,找一本书,其中的知识将成为进一步学习的防火储备和基础。对我来说,这样的书就是Robert Laforet 的《Java 数据结构和算法》。
为了谁
本书的读者范围可以是非常广泛的,因为它无论对于刚刚掌握Java语言语法的人,还是对于正在练习的程序员,对于更深入地理解数据结构和算法的特性都会很有用。 。关于什么
本书致力于数据结构和算法在编程中的学习和使用。它将教会读者数据结构如何决定数据在内存中的组织方式,以及算法如何对这些结构执行各种操作。让我们更深入地挖掘一下,看看这本书到底讲了什么:- 数组。详细介绍了数组和有序数组中的插入、搜索和删除操作。演示有序和无序数组的线性和二分搜索操作。您还将了解什么是 O 语法。
- 排序。考虑三种简单的排序方法:“冒泡排序”、“选择排序”、“插入排序”。从书中你将了解到哪一个是最慢的,哪一个是最简单的。
- 堆栈和队列。考虑了堆栈、队列和优先级队列等数据结构、它们的有效性以及 Java 中的实现。
- 链接列表。本书讨论了双向链表和双链表、它们的效率,以及如何执行插入、查找和删除操作。还涵盖了迭代器及其所需的方法。
- 递归。在各种情况下都会考虑递归,例如:计算三角数和阶乘、构建字谜、执行递归二分搜索、解决汉诺塔难题、实现合并排序、解决背包问题。
- 不平凡的排序。考虑更高级的方法:希尔排序、快速排序和基数排序,它们的算法、效率。
- 二叉树。考虑平衡二叉搜索树,它们如何工作,它们的插入和删除操作,各种类型的遍历,搜索最小值和最大值,搜索后继。霍夫曼代码也将被涵盖。
- 红色和黑色的树。我们认为平衡树是最有效的品种之一,它们的旋转和颜色切换操作是平衡所必需的。
- 树2-3-4。这种类型的树被描述为多路径树的示例;讨论了它们的操作以及与用于外部数据存储的 B 树的关系。
- 哈希表。涵盖了散列及其各种方法,例如线性和二次探测、双重散列和链接方法。您还可以了解如何使用哈希来组织外部文件存储。
- 金字塔。这是一种特殊类型的树,用于有效地实现优先级队列。本书讨论了插入、删除和重排的操作机制。您还将了解什么是金字塔排列以及如何在 Java 中实现它。
- 图表。介绍了加权和未加权图、搜索它们的算法以及用于查找最短遍历路径的算法。
什么是创意工坊应用程序
Workshop应用程序用于演示这些结构和算法。应用程序被设计为可以在浏览器中运行的 Java 小程序。Workshop应用程序创建显示算法或数据结构如何工作的图形图表。例如,在一个设计用于显示按升序排序的列的应用程序中,每次单击直方图上的按钮时,都会执行下一步。在这种情况下,这个算法涉及到的变量的值将会被显示出来,这样你就可以看到代码是如何执行的(让人想起调试器的描述,对吧?)。如何下载并安装创意工坊
- 您可以在此处下载小程序。
- 单击WorkshopApplets.ZIP并下载包含小程序的存档。
- 要了解小程序,您可以阅读本主题及其评论。
这本书的优点
- 非常容易阅读,许多示例几乎都可以“在您的手指上”进行解释;
- 让你看到许多“经典”的东西,而不需要使用复杂的数学公式。好吧,几乎没有他们:)
- 尽管这些示例是用 Java 编写的,但代码中发生的操作通过代码中的以下文本和注释进行了非常详细的解释。因此,任何编程语言的用户都可以阅读它,因为代码示例非常简单:它们读起来几乎就像伪代码一样。
这本书的缺点
- 尽管有“手指上”的解释,但其中还是有漏洞的。为了解释排序数组,作者画了一支足球队,但那里几乎没有描述希尔排序:我无法理解它并在互联网上阅读它;
- 可能存在拼写错误,通常是图像或表格;
- 有些代码已经过时了。
类似物
我推荐本书的类似内容或后续书籍(对于那些想继续学习的人):- Robert Sedgwick 的《Java 算法》;
- 托马斯·科门 (Thomas Cormen) 的《算法:构建与分析》。
GO TO FULL VERSION