前言:如何阅读本书(译)

160 阅读3分钟

第一部分:简介

这个简短但重要的章节将为数据结构和算法的研究提供基础和动力。你还会得到一个快速的了解Dart的核心库,你将以它为基础创建你自己的数据结构和算法。

第一章:为什么要学习数据结构和算法?(译)

第二章:复杂度

第三章:Dart中的基本数据结构

第二部分:初级数据结构

本节介绍了一些重要的数据结构,这些数据结构不在dart:core库中,部分所涉及的更高级的算法的基础。所有的数据结构都是为特定的访问模式而优化的集合,并强制执行模式。

Dart:collection库是Dart自带的,它确实包含了LinkedList和队列类。然而,学习如何自己构建这些数据结构是你阅读本书的原因,不是吗?即使只有这些基础知识,你也会开始从 "算法 "角度思考问题,并且看到数据结构和算法之间的联系。

第四章:堆栈

第五章:关联列表

第六章:队列

第三部分:树

Tree 是组织信息的另一种方式,介绍了 children 和 parents 的概念。你将看到最常见的树的类型,并看看它们如何能用来解决特定的计算问题。

当性能很重要时,树是组织信息的一种方便的方法。在你的工具带中拥有它们将毋庸置疑,在你的职业生涯中,Tree 会被证明是非常有用的。

第七章:树

第八章:二进制树

第九章:二进制搜索树

第十章:AVL树

第十一章:Tries

第十二章:二进制搜索

第十三章:堆

第十四章:优先级队列

第四部分:排序算法

将列表按顺序排列是一个经典的计算问题。

尽管你可能永远不需要编写自己的排序算法,但学习这个课题有很多好处。本节将教给你稳定性、最佳和最坏情况下的时间,以及最重要的分而治之的技术。

研究排序可能看起来有点学术性,与应用程序开发的 "现实世界 "脱节,但了解这些简单案例的权衡,将使你更好地理解如何分析任何算法。

第十五章:O(n²)排序算法

第十六章:合并排序

第十七章:拉德克斯排序

第十八章:堆排序

第十九章:Quicksort

第五部分:图形

图形是一种工具性的数据结构,可以对广泛的事物进行建模。互联网上的网页,鸟类的迁徙模式,甚至原子核中的质子。

本节让你深入(和广泛)思考如何使用图和图算法来解决现实世界的问题。

第二十章:图形

第二十一章:广度优先搜索

第二十二章:深度优先搜索

第二十三章:Dijkstra的算法

结论

第六部分:挑战解决方案