真香,阿里巴巴首发“数据结构和算法”笔记,看完我惊呆了

2020-08-24  本文已影响0人  小迁不秃头

写在前面

算法和数据结构是计算机科学的核心内容。作为程序员,编程是我们的实战项目。然而,写出程序还不够。一个程序在应对一些大型而复杂的情况时,会耗费大量的时间。我们可以很容易写出一个从文件中找到一个词的程序,比如逐词扫描,看是否相符。但如果我们的文件有几十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即可免费获取~

上一篇下一篇

猜你喜欢

热点阅读