第一部分:简介
这个简短但重要的章节将为数据结构和算法的研究提供基础和动力。你还会得到一个快速的了解Dart的核心库,你将以它为基础创建你自己的数据结构和算法。
第二章:复杂度
第三章:Dart中的基本数据结构
第二部分:初级数据结构
本节介绍了一些重要的数据结构,这些数据结构不在dart:core库中,部分所涉及的更高级的算法的基础。所有的数据结构都是为特定的访问模式而优化的集合,并强制执行模式。
Dart:collection库是Dart自带的,它确实包含了LinkedList和队列类。然而,学习如何自己构建这些数据结构是你阅读本书的原因,不是吗?即使只有这些基础知识,你也会开始从 "算法 "角度思考问题,并且看到数据结构和算法之间的联系。
第四章:堆栈
第五章:关联列表
第六章:队列
第三部分:树
Tree 是组织信息的另一种方式,介绍了 children 和 parents 的概念。你将看到最常见的树的类型,并看看它们如何能用来解决特定的计算问题。
当性能很重要时,树是组织信息的一种方便的方法。在你的工具带中拥有它们将毋庸置疑,在你的职业生涯中,Tree 会被证明是非常有用的。
第七章:树
第八章:二进制树
第九章:二进制搜索树
第十章:AVL树
第十一章:Tries
第十二章:二进制搜索
第十三章:堆
第十四章:优先级队列
第四部分:排序算法
将列表按顺序排列是一个经典的计算问题。
尽管你可能永远不需要编写自己的排序算法,但学习这个课题有很多好处。本节将教给你稳定性、最佳和最坏情况下的时间,以及最重要的分而治之的技术。
研究排序可能看起来有点学术性,与应用程序开发的 "现实世界 "脱节,但了解这些简单案例的权衡,将使你更好地理解如何分析任何算法。
第十五章:O(n²)排序算法
第十六章:合并排序
第十七章:拉德克斯排序
第十八章:堆排序
第十九章:Quicksort
第五部分:图形
图形是一种工具性的数据结构,可以对广泛的事物进行建模。互联网上的网页,鸟类的迁徙模式,甚至原子核中的质子。
本节让你深入(和广泛)思考如何使用图和图算法来解决现实世界的问题。
第二十章:图形
第二十一章:广度优先搜索
第二十二章:深度优先搜索
第二十三章:Dijkstra的算法
结论