第三章:数据结构与算法考点总结

1、数据结构的定义

数据结构的定义

数据结构是指数据元素的集合及元素间的相互作用和构造方法。 元素之间的相互关系是数据的逻辑结构,数据元素及元素之间关系的存储称为物理结构(或存储结构)。

数据结构按照逻辑关系的不同分为线性结构和非线性结构两大类。线性结构主要就是线性表(顺序表、单链表)、栈、队列、数组等,而非线性结构主要就是树结构、图结构。

算法与数据结构密切相关,数据结构是算法设计的基础,设计合理的数据结构可使算法简单而高效。

2、数组

数组

3、稀疏矩阵

稀疏矩阵
例题

4、线性表

4.1 线性表的定义

线性表的定义
顺序表与链表
链表的基本操作

单链表的插入操作:
s->next=p->next;
p->next=s;
 
单链表的删除操作:
q=p->next;
p->next=q->next;
(上面两句等价于:p->next=p->next->next)

4.2 顺序存储与链式存储对比

顺序存储与链式存储对比

4.3 队列与栈

队列与栈
例题

分析:
A选项:e1、e2、e3、e4依次从左端入队,就得到了e4、e3、e2、e1这样的队列,此时依次出队即可得到A选项的结果。

B选项:e1、e2先从左端入队,之后e3从右端入队,最后e4从左端入队,就能得到e4、e2、e1、e3的队列,满足B选项。

C选项:e1、e2先从右端入队,之后e3、e4再从左端入队,就可以得到e4、e3、e1、e2的队列,即符合C选项。

D选项:仔细分析这个队列的入队出队规则,我们发现e1和e2无论如何都是相邻的元素,所以无法得到D选项这样的队列。

4.4 广义表

广义表

5、树与二叉树

5.1 基本概念

树与二叉树基本概念

5.2 二叉树的重要特性

二叉树的重要特性

5.3 二叉树的遍历

二叉树的遍历
对于上面的二叉树它的先序、中序、后序以及层次遍历:

  • 先序遍历:采用DLR(根左右),得到的结果是:1 24578 36

  • 中序遍历:采用LDR(左根右),得到的结果是:42785 1 36

  • 后序遍历:采用LRD(左右根),得到的结果是:48752 63 1

  • 层次遍历:依次获取每层的结点,得到的结果是:1 23 456 7 8

要想唯一确定一棵二叉树,必须要有中序遍历的序列结果!!!

5.4 反向构造二叉树

反向构造二叉树

结果

5.5 树转二叉树

树转二叉树

5.6 查找二叉树(排序二叉树)

查找二叉树(排序二叉树)

5.7 最优二叉树(哈夫曼树)

哈夫曼树的目标就是构造最短的带权路径长度!!!
最优二叉树(哈夫曼树)

5.8 线索二叉树

若n个结点的二叉树采用二叉链表做存储结构,则链表中必然有 n+1 个空指针域。
线索二叉树

5.9 平衡二叉树

平衡二叉树
平衡二叉树的平衡因子只能为±1或0

6、图

6.1 基本概念

图-基本概念

6.2 图的存储

邻接矩阵
邻接矩阵
邻接表
邻接表

6.3 图的遍历

图的遍历

6.4 拓扑排序

拓扑排序

6.5 最小生成树

普里姆算法(以顶点为中心,适合稠密图)
克鲁斯卡尔算法(以边为中心,适合稀疏图)

注意:不能产生环路

普里姆算法

7、算法

7.1 算法的特性

算法的特性

7.2 算法的时间复杂度和空间复杂度

算法的复杂度

8、查找与排序

8.1 查找

8.1.1 顺序查找与二分查找

顺序查找
二分查找
例题

例题,使用二分查找关键字17,具体过程如下:


①(1+12)/ 2 = 6(向下取整),所以定位到数组下标为6的元素的位置,比较得17<18,可知关键字在前半部分[1,5]。


②(1+5)/ 2 =3(向下取整),所以定位到数组下标为3的元素的位置,比较得17>10,可知关键字在后半部分[4,5]。


③(4+5)/ 2 =4(向下取整),所以定位到数组下标为4的元素的位置,比较得17>16,可知关键字在后半部分[5,5]。


④此时二分查找的区间只剩一个元素,即第五个元素17,比较得17=17,所以查找成功。(一共进行了4次比较)


二分查找在查找成功时,关键字得比较次数最多为 log2^n(向下取整) + 1:。时间复杂度为O(log2^n )

8.1.2 散列表

散列表
散列表冲突的解决方法
散列表冲突的解决方法

8.2 排序

排序的概念与分类

8.2.1 直接插入排序

直接插入排序

8.2.2 希尔排序

希尔排序

8.2.3 直接选择排序

直接选择排序

8.2.4 堆排序

堆排序
堆排序
初建堆
例题

8.2.5 冒泡排序

冒泡排序

8.2.6 快速排序

快速排序

8.2.7 归并排序

归并排序

8.2.8 基数排序

基数排序

8.2.9 排序算法的时间复杂度、空间复杂度及稳定性

排序算法的时间复杂度、空间复杂度及稳定性

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值