算法与数据结构体系学习大纲:
1 定义
数据结构定义:就是研究数据的存储方式;把现实中大量而复杂的问题以特定的数据类型(单个数据存储)和特定的存储结构(个体的关系)保存到内存中。
算法定义:在此基础上为实现某个功能(查找,删除,排序等)而进行的操作。
数据结构用于解决存储数据,算法用于对存储数据的操作
2 存储结构
2.1 线性表
顺序表: 简单地理解,就是常用的数组
链表: 存储数据时,是随用随申请,因此数据的存储位置是相互分离,存储位置是随机的
栈:遵循“先入后出”的原则
队列:遵循“先入先出”的特点
哈希表:根据关键码值(Key value)而直接进行访问的数据结构
2.2 树结构
- 二分搜索树
- 堆
- AVL
- 红黑树
- B类树
2.3 图结构
2.4 高级数据结构
- 线段树
- 并查集
- Trie
- SQRT分解
3 时间复杂度和空间复杂度
3.1 时间复杂度
算法的运行时间,便是方式为O(频度),以去掉系数的最高项为准,例如运行了(n² + n + 1)次的算法的时间复杂度为O(n²)
几种常见的算法时间复杂度的比较(由小到大):
1 | O(1)常数阶 < O(logn)对数阶< O(n)线性阶 < O(n2)平方阶 < O(n3)(立方阶) < O(nn) (指数阶) |
3.2 空间复杂度
该算法所耗费的存储空间,它也是问题规模n的函数
4 算法
4.1 排序算法
- 插入
- 冒泡
- 选择
- 希尔
- 快速
- 归并
- 堆排序
- 计数排序
- 桶排序
- 基数排序
4.2 查找算法
- 线性查找
- 二分查找
4.3 字符串算法
- KMP
- 模式匹配