数据结构和算法
1.学习内容
本书所详细分析的内容概括
帮助你知道接下来要学的东西包含那些
-
数据结构的概述
- 数据结构定义
- 算法定义
-
模块一:线性结构
- 连续存储[数组]
- 离散存储[链表]
- 线性结构–栈
- 线性结构–队列
- 专题:递归
- 求1+2+3+4+5+6…100的和
- 求阶乘
- 汉诺塔
- 走迷宫
-
模块二:非线性结构
- 树
- 图
-
模块三:查找和排序
- 折半查找
- 排序
- 冒泡
- 插入
- 选择
- 快速排序
- 归并排序
-
待更新
第一课
书本推荐
关于数据结构呢 有几本数据可以推荐
严蔚敏
吴伟民
以上两个人写的数据结构 还是比较可以的
但是只有伪算法 没有具体的程序例如c语言去实现的代码结构
高一凡
根据算法数据 把伪代码进行c语言的编程方式实现
可以直接运行的代码
数据结构的概述
定义
把现实中的数据和数据之间的关系存储到内存当中
把我们现实生活中那些大量而复杂的数据以特定的数据类型和特定的存储结构保存到主内存当中,以及在此基础上实现的某些功能(例如: 查找某个元素,删除某个元素,对某数据进行遍历,排序...)而进行的操作,这些操作就是算法
特定的数据类型 例如 线 树 图
特定的存储结构 线性存储 链式存储...
某些功能 遍历 增删改查
算法 操作的具体实现
数据结构=个体+个体的关系
算法=对存储数据的操作
数据结构研究什么
数据结研究数据的逻辑结构和存储结构以及相关结构上的操作
数据结研究数据的逻辑结构和存储结构以及相关结构上的操作
逻辑结构:(关系)
无关系 集合
一对一 线
一对多 数
多对多 图
存储结构(内存上的存储)
线性存储
链式存储
散列存储
操作
初始化
创建
清空
返回某些内容
实现插入
删除
遍历....
例子讲解
当我们到把一个班级的信息记录下来
我们可以使用数组
[学生1,学生2,学生3,...]
但是如果是10000个要怎么存储
如果用数组
那么就需要连续的空间很明显不太合适
就有了 链表
内存地址1[我存1000个|下一个在内存2]
内存地址2[我存储2000个|下一个在内存3]
内存地址3[我存储5000个|下一个在内存4]
内存地址4[我存储4000个|下一个在内存5]
利用分开的空间去存储那些大量的数据
但是生活中不仅仅只有这些数据
例如 在一个公司中 老板管理 领导 领导管理组长 组长管理员工
这种存在上下联系的怎么处理呢
有了数结构
老板
技术组长 人事组长 设计组长
员工1 员工2 员工3 员工4
把这种逻辑上是树的结构
利用某种存储方式 实现数据存储到内存当中
还有一些 就是多对多
例如地铁的建造
站点1
| |
| |
| | 站点4------------站点5
| |
站点2-------站点3 --------站点6
根据相关的距离 资金 人流 设计最好的路线
用最少的钱班最多的事情
我有好几个地铁站站点
我如何根据个站点的人流量 距离 以及修建的资金
去建造一个最好的地铁路线
把地铁站点的数据 和站点之间的关系
按照某种存储结构存到内存中
在完成数据的查找 比如显示某站点的人流数的操作
就是算法