数据结构与算法是一门大课,这里蜻蜓点水一样把学到的知识过一下,内容包括简介、理解、数据结构、算法。
一、简介
算法是计算方法,解决问题之道,有光子计算、DNA 计算、量子计算等等
数据结构是对 ADT 的具体实现
ADT 对数据实现“逻辑”层次和“物理”层次的分离
数据结构 + 算法 = 程序
二、理解
1. 抽象的例子
用“逻辑 Logical”和“物理 Physical”两种层次看待汽车
- 修理工看汽车看到的是“物理”层次,通过机械原理等实现方向盘、油门等接口
- 老司机看汽车看到的是“逻辑”层次,使用方向盘、油门等接口做其他事情
**
先要理解这两个东西
- 在编程中,编程语言提供了“控制结构”和“数据类型”
- 抽象数据类型(ADT:Abstract Data Type)是对数据处理的逻辑描述
2. 抽象的角度看 ADT
用“逻辑 Logical”和“物理 Physical”两种层次看待 ADT
- 通过编程语言的“控制结构”和“数据类型”实现 各类 ADT 接口
- 算法使用各类 ADT 接口做各种计算
3. 数据结构和 ADT 关系
同一ADT可以采用不同的数据结构来实现,采用程序设计语言的控制结构和基本数据类型来实现ADT所提供的逻辑接口——属于ADT的“物理”层次
三、数据结构
线性结构
- 栈(Stack):后进先出
- 队列(Queue):先进先出
- 双端队列(Deque):能够两端进、两端出
- 无序表:无顺序的数据
- 有序表:有顺序的数据
- 映射(Map):常使用散列表(哈希表)
非线性结构
- 树(Tree)
- 堆(Heap)
- 图
四、算法
排序算法
- 冒泡排序
- 选择排序
- 插入排序
- 谢尔排序
- 归并排序
- 快速排序
「@浪里淘沙的小法师」