这本通俗易懂且有趣的书通过数据结构的视角深入介绍了计算思维——数据结构是任何编程工作的关键组成部分。通过图表、伪代码和幽默的类比,你将了解数据结构如何驱动算法操作,不仅可以了解如何构建数据结构,还可以了解如何以及何时使用它们。 本书将为你提供15种以上关键数据结构的实现和使用的强大背景知识,从栈、队列、缓存到布隆过滤器、跳跃表和图。通过在咖啡馆排队来掌握链表,通过编目夏季奥运会的历史来掌握散列表,通过整齐地整理厨房的橱柜来掌握四叉树。随着基本的计算机科学概念,如递归和迭代,您将学习:
《有趣的数据结构》展示了如何有效地将这些思想应用到现实世界的问题中——现实世界中有很多问题都是为了买一杯合适的咖啡。在任何层次上,充分理解数据结构都将教会你跨多种编程语言应用的核心技能,使你的职业生涯更上一层楼。 这是一本通过数据结构、组织和存储数据的构造来进行计算思维的书。它不仅仅是一本方便的数据结构的教程。相反,它探索了这些结构背后的思考和它们对解决复杂问题的基本影响,使用现实世界的类比使抽象的计算概念直观。本书的目标是为如何利用数据中已有的结构或创建新的结构来有效地解决问题提供新的见解。 理解数据结构如何起作用对于有效地使用它们至关重要。就像一个有经验的木匠不会用锤子把螺丝敲进木头里,也不会用砂纸把木头切成两半一样,一个有经验的程序员需要为每一项工作选择合适的工具。正如我们将在接下来的章节中反复看到的,每一种数据结构都伴随着权衡。锯子切割木头比砂纸更有效,但会产生粗糙的边缘。没有一种数据结构能够完美地适用于所有可能的用例,但这正是计算机科学和算法发展如此有趣的原因。一个优秀的计算机科学家必须了解不同的数据结构是如何表现的,以便决定在哪里可以最好地使用它们。
这本书集中在一些规范的数据结构,并使用它们来探索计算思维的基本主题。这些数据结构中的每一个都是更一般的数据结构和概念方法的有用示例。例如,B-树展示了保持搜索树平衡和优化昂贵内存访问的一种方法。我讨论内存使用和布隆过滤器的准确性之间的权衡;跳跃表随机化的使用;以及如何用网格、四叉树或K-D树来捕获多维结构。因此,这本书既不是编程的入门,也不是数据结构的综合选集,也不是煮咖啡的全面分析(尽管我们将反复触及这个重要的话题)。我们的目标是不同的——开发可以应用于一系列特定问题和编程语言的思维工具。
简介 第一章:记忆中信息 第二章:二分查找 第三章:动态数据结构 第四章:堆栈和队列 第五章:二叉搜索树 第六章:尝试和调整数据结构 第七章:优先级队列和堆 第八章:网格 第九章:空间树 第十章:哈希表 第十一章:缓存 第十二章:B树 第十三章:Bloom Filters 第十四章:跳跃表 第十五章:图 结论
杰里米·库比卡(Jeremy Kubica)是一名专攻人工智能和机器学习的工程师总监。他在卡内基梅隆大学获得机器人博士学位,在康奈尔大学获得计算机科学学士学位。他在研究生院的几年时间里都在开发探测杀手小行星的算法(当然,真正阻止它们是“未来的工作”)。他是多本书的作者,旨在向人们介绍计算机科学,包括计算童话和CS侦探,以及计算童话博客。