数据结构
本书讲述了高效数据结构的创建和分析。 它涵盖了
- 原始的节点结构;
- 渐进符号,用于数学地讨论性能特性;
- 内置数组;
- 从节点或数组构建的列表结构;
- 迭代器作为枚举序列中项目的抽象模型;
- 堆栈和队列,用于计算后进先出和先进先出排序;
- 二叉树和通用树结构,用于搜索或表示层次关系;
- 最小和最大堆,用于表示基于优先级的排序;
- 图结构,用于表示数据元素之间更一般性的关系;
- 哈希表,用于有效检索字符串和其他对象;最后
- 权衡结构之间的权衡,以及选择最合适结构的策略。
要理解本书中的内容,你应该对编程语言足够熟悉,能够使用和编写自己的变量、算术表达式、if-else 条件、循环、子程序(也称为函数)、指针(也称为引用或对象句柄)、结构(也称为记录或类)、简单的输入和输出以及简单的递归。
由于许多不同的语言对数据结构的构建方法不同,因此我们使用伪代码,这样你就可以将代码翻译成你自己的语言。
一个维基教科书类似于一个开源软件项目:贡献者为项目创建内容以帮助他人,为个人充实,或为了完成贡献者自己工作的某些事情(例如,讲座准备)。
一本开放的书,就像一个开放的程序一样,需要时间才能完成,但即使读者做出微不足道的贡献,也能从中受益匪浅。例如,您可以修复文本中的“错误”(错误可能是印刷错误、解释错误、技术错误、美学错误或其他错误),以制作一本更好的书。如果您发现修复错误的机会,只需点击“编辑”,进行更改,然后点击保存。其他贡献者可能会审查您的更改,以确保它们适合本书。如果您不确定,您可以访问讨论页面并提出询问。请使用常识。
如果您想做出更大的贡献,您可以查看那些过短或需要更多工作的部分或章节,然后开始写作!在开始写作之前,请务必先浏览一下整本书,以避免内容重复。此外,您应该阅读贡献者指南页面,以获取一致性提示和建议。
请注意,您不需要一次性贡献所有内容。您可以添加模板“{{TODO|待办事项描述}}”到页面,也许其他人会为您完成这些部分。
这本书有意保持专注,以便更容易做出贡献(因为这样最终目标就更加清晰)。这本书是关于算法的三本计算机科学教科书的第一部分,接着是关于算法技术的算法和高级数据结构与算法。如果您想贡献一个还没有列在三本书中的主题,请尝试将它放在高级这本书中,这本书的性质更加包容。或者,如果您认为该主题是基础性的,您可以访问算法或数据结构讨论页面并提出建议。
此外,欢迎以附录的形式提供数据结构的实现(使用Ada、C、C#、Perl、Python、Java、Ruby或Scheme)。
[Aho] | Alfred V. Aho, Jeffrey D. Ullman, John E. Hopcroft. 数据结构与算法。Addison Wesley,1983年。 | |
[CLRS] | Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. 算法导论。McGraw-Hill,2001年。 | |
[Knuth] | Donald E. Knuth. 计算机程序设计艺术,第1-3卷。Addison-Wesley Professional,1998年。 | |
[Kishor] | S.B. Kishor 数据结构,第3版。Das Ganu Prakashan,纳格浦尔,2008年。 | |
[Judith] | Judith L Gersting. 计算机科学的数学结构。W.H. Freeman and Company,2014年。 |
此外,作为一个在线参考,可以了解当今算法的范围:算法词典