基础知识整理
基本术语
1.数据:是信息的载体,是描绘客观事物属性的所有能输入计算机中并被程序所识处理的符号的集合。
2.数据元素:是数据的基本单位,由若干数据项组成。数据项是构成数据元素的最小单位。
3.数据对象:是具有相同性质的数据元素的集合。是数据的一个子集。
4.数据类型:是一个值的集合和定义在此集合上的一组操作的总称。
5.数据结构:是相互之间存在一种火多种特定关系的数据元素的集合。
- 数据结构包括:逻辑结构、存储结构、数据的运算。
- 算法的设计取决与逻辑结构、算法的实现依赖与存储结构。
6.逻辑结构指数据元素之间的元素关系与存储无关,独立于计算机。
7.存储结构是指数据结构在计算机中的表示又称屋里结构。主要有顺序存储,链式存储,索引存储和散列存储。
- 顺序存储:存储在物理位置相邻的存储单元中。优点:可实现顺序存储,节约空间。缺点:只能使用相邻的存储空间造成浪费。
- 链式存储:借助指示元素的存储地址的指针来表示逻辑关系。优点:充分利用空间避免浪费。缺点:每个元素的指针会占据空间。
- 索引存储:存储元素的同时建立索引表。优点:检索速度快。缺点:索引表会占据额外空间并在其删改时也得修改索引项。
- 散列存储:又称哈希存储,根据元素的关键字直接计算出地址。优点:检索,删改操作速度快。缺点:哈希函数不好会造成存储单元冲突。
8.算法:是对特定问题的求解步骤的一种描述。具有有穷性、确定性、可行性、输入与输出等特性。
9.算法效率的度量是通过时间复杂度和空间复杂度来描述的。
10.线性表是具有相同数据类型的n个元素的有限序列。具有
- 表中元素个数有限
- 具有逻辑的顺序性
- 每个元素都是数据元素,每个元素都是单个元素
- 每个元素数据类型相同,占据着相同大小的数据空间
- 具有抽象性,表示元素间一对一的相邻关系
- 线性表是一种逻辑结构,表示元素之间的相互关系。而顺序表和链表是指存储结构
- 线性表详细:链接
11.栈:是只允许在一端进行插入和删除的线性表。详细:链接
12.队:指允许在一端插入,在另一端删除。先进先出的特性。详细:链接
13.树:详细:链接
14.哈夫曼树与哈夫曼编码
15:图的深度优先遍历与广度优先遍历
16.prim算法思想
17:kruskal算法思想
18.迪杰斯特拉算法解决的是从网中的一个顶点到所有其它顶点之间的最短路径。
19:弗洛伊德算法计算的是任意两顶点之间的最短路径。
20.对有向无环图进行拓扑排序,只需要遵循两个原则:
- 在图中选择一个没有前驱的顶点 V。
- 从图中删除顶点 V 和所有以该顶点为尾的弧。
- 每个AOV网存在一个或多个拓扑排序。
21.AOE网:AOE 网是在 AOV 网的基础上,其中每一个边都具有各自的权值,是一个有向无环网。其中权值表示活动持续的时间。
- 如图 1 所示就是一个 AOE 网,例如 a1=6 表示完成 a1 活动完成需要 6 天;AOE 网中每个顶点表示在它之前的活动已经完成,可以开始后边的活动,例如 V5 表示 a4 和 a5 活动已经完成,a7 和 a8 可以开始。
- 如果将 AOE 网看做整个项目,那么完成整个项目至少需要多少时间?
- 起始点是入度为 0 的点,称为“源点”;结束点是出度为 0 的点,称为“汇点”。这条最长的路径,被称为”关键路径“
22.图的存储
-
邻接矩阵法
-
邻接表法
-
十字链表:十字链表法仅适用于存储有向图和有向网
-
邻接多重表:仅适用于存储无向图或无向网。
23.散列表:又称哈希表
- 链表法
- 开放地址法
24.希尔排序 d=4
25.冒泡排序:两两交换
26.简单选择排序
27.快速排序
28.广义表:当广义表不是空表时,称第一个数据(原子或子表)为"表头",剩下的数据构成的新广义表为"表尾"。
- 广义表中存储的单个元素称为 “原子”,而存储的广义表称为 “子表”。
- 例如创建一个广义表 LS = {1,{1,2,3}},我们可以这样解释此广义表的构成:广义表 LS 存储了一个原子 1 和子表 {1,2,3}。
- 例如在广义表中 LS={1,{1,2,3},5} 中,表头为原子 1,表尾为子表 {1,2,3} 和原子 5 构成的广义表,即 {{1,2,3},5}。