在家已经看了几本数据结构与算法书了,但是之前都是为考研做准备而且从类没有实现过一次代码.所以这篇博客就是作为记录自己算法实现的一个开端. 依据
设计模式
依赖倒转原则,这里先写下后面要实现的几个数据结构,后期每个数据结构都以随想形式链接到此处. 内容大概按严蔚敏
的数据结构
中的大纲顺序依次实现.
算法的几个特性和要求
算法的五个特性
1. 有穷性:一个算法的操作步骤是有限的,不能是无限的
2. 确定性:算法中的每一个步骤都要确定的词,不能含糊不清
3. 输入: 算法具有0个或多个输入
4. 输出: 算法至少有1个或多个输出
5. 可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成
算法设计的要求
1. 正确性:算法的执行结果应当满足预先规定的功能和性能要求。
2. 可读性:一个算法的设计应当思路清晰、层次分明、易读易懂。
3. 健壮性:当输入不合法的数据时,能做适当处理,避免引起严重后果。
4. 高效性:有效地使用存储空间,有高效的时间效率。
常见数据结构
线性表
- 线性链表
- 循环链表
- 双向链表
栈
- 数组实现
- 链表实现
队列
- 链队列
- 循环队列
串/数组/广义表
树/二叉树
- 先序遍历
- 中序遍历
- 后序遍历
图
- 深度优先遍历
- 广度优先遍历
- 单源最短路径
- 多源最短路径
常见排序
插入排序
- 直接插入排序
- 希尔排序
- 其他插入排序
快速排序
选择排序
- 简单选择排序
- 树形选择排序
- 堆排序
归并排序
基数排序
- 多关键字排序
- 链式排序
以上并未列全, 有些数据结构的应用也是很有必要自己实现一遍的,后期上面依旧会补充.