文章目录
一、概述
算法效率的量度
- 时间复杂度
- 空间复杂度
- 稳定性
二、树
二叉树的遍历
4种
平衡二叉树
每次插入、删除都需要调整
红黑树
平衡二叉树的优化,不那么严格的平衡二叉树;
- 相比起平衡二叉树:减少调整次数
- 相比起链表:降低了查找的时间复杂度O(n) -> O(logn)
B树 和 B+树
用于查找的树
B 树
- 多路平衡查找树
- 应用于磁盘查找的,B树的高度就是磁盘的存取次数
- 叶子:空
B+树
- B树的变形
- 应用于数据库的
- 叶子:包含信息
区别:
B树 和 B+树对结点中关键字个数的限制不一样,具体是多少个有点忘了,同一层B+树一个结点中的关键字要比B树的多
三、图
图的遍历
- 广度优先:类似二叉树的层序遍历
- 深度优先:类似二叉树的前序遍历
四、排序
1. 类型
交换:
1.冒泡:下标逐个交换
2. 快排:跳下标交换
插入
1.直接插入:
2.折半插入:
3.希尔排序:
选择
1.简单选择
2.堆排序
归并
归并排序
基数排序
基数排序
2. 重点排序算法
快排
- 不稳定
归并
- 稳定
堆排序(大根堆、小根堆)
将一堆数组看做一颗完全二叉树,先初始建堆,然后再逐个删除
- 不稳定:视作数组,完全二叉树的孩子和双亲在交换的时候,是跳下标交换的
希尔排序
增量:不断缩小
每隔一个增量d的元素就构成一个子序列;子序列中使用插入算法
- 不稳定:增量之间交换,隔很远
3. 稳定性
稳定
不稳定
- 简单选择:选位置坐下,下标隔了很远
- 快排:跳下标交换
- 希尔:增量之间跳下标交换
- 堆排:树的上下层,跳下标