写在前面
算法和数据结构是计算机科学的核心内容。作为程序员,编程是我们的实战项目。然而,写出程序还不够。一个程序在应对一些大型而复杂的情况时,会耗费大量的时间。我们可以很容易写出一个从文件中找到一个词的程序,比如逐词扫描,看是否相符。但如果我们的文件有几十TB,而且要从文件中找到上百个词,逐个扫描的办法就几乎不可行。我们需要优化程序,以便我们的程序可以应对复杂问题。算法研究解决问题的方法,而数据结构则是设计一种更好的组织数据和使用数据的方式。两者有很强的相互依赖关系,所以往往放在一起讨论。
数据结构和算法
对标阿里P8的数据结构与算法的思维导图:
主要内容展示
第1章综述
一个各主题的总体印象并介绍少量后面要用到的术语。对于那些对面向对象编程不太熟悉的读者,本章总结了一些相关的知识。
第2章数组
集中讨论数组。这里面包含有两层意思:如何使用类来对数据存储结构进行封装和类的接口。其中包括数组和有序数组的查找、插入、删除、线性查找和二分查找。
第3章简单排序
介绍三种简单的(但是慢速的)排序方法:冒泡排序、选择排序和插入排序。
第4章栈和队列
涉及到三种可以被认为是抽象数据类型(ADT)的数据结构:栈、队和优先级队列。
第5章链表
介绍了链表中的双向链表和双端链表。本章还解释了Java中被称作“无痛指针”的使用,并用一个专题applet演示了链表的插入、查找和删除是如何进行的。
第6章递归
这是书中仅有的非数据结构的几章之一。本章给出了大量的递归例子,包括汉诺塔问题和归并排序,它们都有相应的专题applet。
第7章高级排序
研究了几种高级的排序方法:希尔排序和快速排序。专题applet演示了希尔排序,快速排序的基础一一划分 ( paritioning)和两种形式的快速排序。
第8章二叉树
介绍了最简单最通用的树型结构:不平衡的二叉搜索树。一个专题applet演示了此类树的插入、删除和遍历是如何进行的。
第9章红-黑树
“红-黑树”解释了红-黑树,它是最有效的平衡树之一。
帮忙转发+关注,加小助理vx:bjmsb2019即可~
第10章2-3-4树和外部存储
第10章“2-3-4树和外部存储”将2-3-4树作为多叉树的一个例子进行了讲解。讨论2-3树和2-3-4树与B树的关系,这些知识对于存储外部(磁盘)的文件十分有用。
第11章哈希表
“哈希表”转到哈希表这个新的讨论领域。专题applet 演示了几种方法:线性、二次探测和再哈希及链地址法。本章中还讨论了哈希表方法在组织外部文件方面的应用。
第12章堆
“堆”讨论了-种特殊的树一堆, 用它作为优先队列的一种有效的实现手段。
第13章图
第14章带权图
第13章“图”和第14章“带权图”处理图的相关问题,前者处理未加权图和简单的查找算法,后者处理带权图和更加复杂的算法,如最小生成树和最短路径。
第15章应用场合
“应用场合”总结了前几章描述过的各种数据结构,还着重讨论了如何在给定情况下应用合适的数据结构的问题。
福利来袭:
左程云数据结构与算法面试视频讲解:
写在最后
需要免费领取这份数据结构和算法的朋友,帮忙转发+关注,加小助理vx:bjmsb2019即可免费获取~
网友评论