什么是数据结构
- 计算机存储以及组织数据的方式
- 也可以理解为,有一堆数据,他们之间有些特殊的关系.
▼
常见的数据结构
- 线性表(数组 链表 栈 队列)
- 树
- 图
▼
逻辑结构
数据结构从逻辑上看,分为下面几种结构:
1. 集合结构
![](https://img.haomeiwen.com/i27964194/dd042bc843ec9dc9.png)
这种结构注意看,里面有很多元素,但是这些元素之间是没有什么关系的 类似我们OC里面的NSSet NSMutableSet
2. 线性结构
![](https://img.haomeiwen.com/i27964194/5ec3c096e6e42fab.png)
线性结构有什么特点呢?他们是有顺序的.这种是不是见过,我们OC中的NSArray NSMutableArray都是线性结构的
3. 存储结构
数据结构从逻辑上可以分为上面几种,但是这些数据统统都是要存放到内存里面去的,那么内存中存放数据也有不一样的结构.
- 顺序存储结构
这组存储单元内存地址是连续的.
- 链式存储结构
这组存储单元内存地址可以是连续的,也可以是不连续的.它不要求逻辑上相邻的元素在物理位置上也相邻.
▼
线性表
1. 什么是线性表
- 线性表就是多个具有相同特性的数据元素(节点)组成的,有限而且有序的集合
- 当线性表的节点个数为0时,我们称之为空表
- 线性表第一个元素称为首节点,最后一个元素称为尾节点
- 比如某个线性表的元素a1 a2 a3 a4 ......a99 。那么a1...a98 都是a99的前驱,a98是a99的直接前驱
- 比如某个线性表的元素a1 a2 a3 a4 ......a99 。那么a2...a98 都是a1的后继,a2是a1的直接后继
2. 线性表的顺序存储结构
- 用一组地址连续的存储单元依次存储线性表的数据元素
- 顺序存储结构
- 线性表的链式存储结构
- 用一组任意的存储单元存储线性表中的数据元素,它的存储单元可以是连续的,也可以是不连续的
- 链式存储结构
![](https://img.haomeiwen.com/i27964194/e64ab4d471c1067f.png)
话不多说,直接先上图
![](https://img.haomeiwen.com/i27964194/a9dcb0f50155cf34.png)
![](https://img.haomeiwen.com/i27964194/acd5854e357e669f.png)
经历过校招的人都知道,算法和数据结构都是不可避免的。
在笔试的时候,最主要的就是靠算法题。像拼多多、头条这种大公司,上来就来几道算法题,如果你没AC出来,面试机会都没有。
在面试(现场面或者视频面)的时候也会问算法题,难度肯定是没有笔试的时候那么难的。我们可以想象一个场景,一面面试面到一半,面试官让你反转二叉树,问问现在的自己,你还会吗。
不扯远了,如果还在上大学的同学可以先以排序和各种的基本数据结构开始入门。我花了一个星期将八大基础排序和链表/二叉树/栈/队列制作成一份精美的PDF。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
这份PDF阅读体验肯定是要比公众号和各大的博客平台的文章要好的。PDF内容为纯手打!
下面简单介绍一下八大基础排序和基础的数据结构,每种排序的思想和基础的讲解和源码在PDF里边有。
![](https://img.haomeiwen.com/i27964194/482bd614cd391933.png)
![](https://img.haomeiwen.com/i27964194/b57837f774f70b2d.png)
需要完整版笔记的老铁回复 “架构” 即可获得免费领取方式!
数据结构与算法学习文档及笔记
一、冒泡排序
![](https://img.haomeiwen.com/i27964194/bdfe1600e41fadf0.png)
![](https://img.haomeiwen.com/i27964194/650cdf4e0e4e978b.png)
二、选择排序
![](https://img.haomeiwen.com/i27964194/eba1cca625ae6b4c.png)
![](https://img.haomeiwen.com/i27964194/3c9e60580679383a.png)
三、插入排序
![](https://img.haomeiwen.com/i27964194/880aaa265c5f769e.png)
![](https://img.haomeiwen.com/i27964194/282e2fef72f1de24.png)
四、快速排序
![](https://img.haomeiwen.com/i27964194/6b0a7fae50e17b80.png)
![](https://img.haomeiwen.com/i27964194/ef3d1210c23d55fc.png)
五、归并排序
![](https://img.haomeiwen.com/i27964194/4da64ee7e9b8857d.png)
![](https://img.haomeiwen.com/i27964194/30e14a029054d22a.png)
六、希尔排序
![](https://img.haomeiwen.com/i27964194/0a6e6d4439482c4b.png)
![](https://img.haomeiwen.com/i27964194/2caaecbd1ebaa210.png)
七、堆排序
![](https://img.haomeiwen.com/i27964194/1a806d2e75017a35.png)
![](https://img.haomeiwen.com/i27964194/ba99155c06ceb696.png)
八、基数排序(桶排序)
![](https://img.haomeiwen.com/i27964194/408285c7a76393fa.png)
![](https://img.haomeiwen.com/i27964194/9a5e54275b486a5e.png)
九、递归
![](https://img.haomeiwen.com/i27964194/b1436f24e7a01daf.png)
![](https://img.haomeiwen.com/i27964194/3afa9715989b6067.png)
十、链表
需要完整版笔记的老铁回复 “架构” 即可获得免费领取方式!
![](https://img.haomeiwen.com/i27964194/ad7888ba83ed080c.png)
![](https://img.haomeiwen.com/i27964194/a7c524d5daa917d8.png)
十一、栈
![](https://img.haomeiwen.com/i27964194/eb5b358546a14904.png)
![](https://img.haomeiwen.com/i27964194/7d70a53ba58e570b.png)
十二、队列
数据结构[队列]就是这么简单
![](https://img.haomeiwen.com/i27964194/5268d42e28d08d23.png)
十三、二叉树
- 0.二叉树就是这么简单
- 1.动态创建二叉树
- 2.查询二又查找树相关
![](https://img.haomeiwen.com/i27964194/66d4a865026dc8a8.png)
![](https://img.haomeiwen.com/i27964194/f2d38424faaefda7.png)
最后想要说明的是,排序算法/数据结构的代码可能不是最优解,代码的实现都是以比较容易理解的方式去写的。几乎每句代码都有对应的注释,应该是能看懂的。
网友评论