基本概念部分
数据:对客观事物的符号表示。
数据元素:数据的基本单位,数据结构讨论的最小单位。有时,一个数据元素可以由若干个数据项组成(例如,一个人是一个数据元素,身高、体重等是这个人的数据项)。
数据对象:数据对象是性质相同的数据元素的集合。
数据结构:相互存在的一种或者多种特定关系的数据元素的集合。
逻辑结构:对数据之间关系的描述,与数据的存储结构无关。一般分为三种结构:
(1)线性结构:包括数组、链表、栈、队列等。
(2)树形结构:树、堆
(3)图形结构:图
存储结构(物理结构):数据元素的表示和关系的表示。一般分为四种:
(1)顺序存储方法:如数组。
(2)链式存储方法:如链表。
(3)索引存储方法:比如索引表
(4)散列(哈希)存储方法:通过散列(哈希)函数来区分节点与寻找节点。
算法的特性:5个
(1)有穷性:有限步之后结束。
(2)确定性:每个步骤必须由确定的定义
(3)可行性:必须通过已经实现的基本操作且必须是有限次
(3)输入:0个、1个或者多个
(4)输出:1个或者多个
算法效率的衡量:复杂度
时间复杂度:算法中基本操作的执行次数。
- 迭代方法的时间复杂度
- 递归方法的时间复杂度
空间复杂度:算法在运行时所需存储空间的度量。
目录部分
(注:该部分并不完善,后面存在修改的可能)
线性表
数组:数组的常用操作
链表:单向链表的创建(头插法、尾插法),链表的常用操作,双向链表和循环链表
栈和队列:顺序栈(队列)的创建,栈和队列的常用操作,链栈和链队列,共享栈和双端队列
串:
串的基本存储结构,串的基本操作,简单模式匹配算法,KMP和改进KMP算法
矩阵和广义表:
矩阵的压缩存储,广义表
树:
树的存储结构,二叉树的创建,二叉树的(改进)遍历算法,树与二叉树转换,二叉树和森林转换
二叉排序树和平衡二叉树,Huffman树和Huffman编码
堆:
并查集:
图:
图的存储结构:邻接矩阵,邻接表
图的遍历算法:DFS和BFS
最小生成树:普利姆算法和克鲁斯卡尔算法
最短路径:dijkstra算法和弗洛伊德算法
拓扑排序,关键路径
排序:
排序算法的分类
插入类排序:直接插入,折半插入,希尔排序
交换类排序:起泡排序,快速排序
选择类排序:简单选择排序,堆排序
二路归并排序
基数排序
外部排序:置换-选择排序,最佳归并树,败者树
查找:
顺序查找法,折半查找法,分块查找法
二叉排序树,平衡二叉树,红黑树
B-树
散列表的建立和冲突解决,散列表的性能分析