数据结构期末考试重点

本文深入探讨了数据结构和算法中的关键概念,包括时间复杂度、KMP算法、希尔排序、广义表、二叉树、图的遍历和最小生成树算法。同时,讲解了排序算法如快速排序、归并排序以及查找方法如顺序查找、折半查找。此外,还介绍了哈希表和处理冲突的方法,以及在二叉排序树中删除节点的策略。
摘要由CSDN通过智能技术生成

ppt的搬运工。。。

时间复杂度:

kmp:O(n + m) 这和BF算法的一般情况差不多。

补充:希尔排序

一、选择填空

1、计算机算法

必须具备输入、输出、可行性、确定性、有穷性

2、数组

按行存放按列存放

设有数组A[n,m],数组的每个元素长度为3字节,n的值为1~8,m的值为1~10,数组从内存收地址BA开始顺序存放,请分别用列存储方式和行存储方式求A[5,8]的存储首地址为多少?

(1)列优先 (列存储方式答案)

A[5,8] = A(0,0) + (n*(j-1)+(i-1))*L = BA + (8 * ( 8-1) + ( 5-1 )) * 3 = BA + 180

(2)行优先(行存储方式答案)

A[5,8] = A(0,0) + (m*(i-1)+(j-1))*L = BA + (10 * ( 5-1) + ( 8-1 )) * 3 = BA + 141

3、kmp的next数组


 

第一个元素为0; 当没有失配位前没有能够首尾匹配的元素时,则为1; 当有首尾匹配元素时,则为:匹配成功的元素数+1; 

模式串 P= ‘ abaabcac ’的 next 函数值序列为 01122312 。

(4)广义表

  

注意长度为1,深度为2。 

1.广义表可以采用顺序存储结构吗?
由于广义表中的数据元素的类型不统一,因此难以采用顺序存储结构来存储。
2.如何采用链式存储结构存储广义表?
若广义表不空,则可分解为表头和表尾;反之,一对确定的表头和表尾可唯一地确定一个广义表
采用 头尾表示法 存储广义表。

(5)树

分支结点: 即度不为 0 的结点(也称为内部结点)
树的度: 所有结点度中的最大值
树的深度: 从1开始
遍历: 指每个结点都被访问且仅访问一次, 不遗漏不重复
所有有序树都能转为唯一对应的二叉树 不失一般性。(左孩子右兄弟表示法)
二叉树是有序树,即:左右子树的顺序不能颠倒

对于任何一棵二叉树,若2度的结点数有n 2 个, 则叶子数( n 0 必定为n 2 +1 (即 n 0 =n 2 +1

满二叉树:完全对称,叶子节点只在最后一层。

完全二叉树:满二叉树从最后一个节点开始连续去掉几个节点。

完全二叉树中如果有度为 1 的结点,只可能有一个, 且该结点只有左孩子。

  

 

 完全二叉树满二叉树中结点的序号可以唯一地反映出结点之间的逻辑关系 。

已知二叉树的前序序列和中序序列,可以唯一确定。

 

  

 

线索二叉树:通过左右两个指针体现出前序(或者后序或者中序)的遍历顺序,左指针指向其前驱节点,右指针指向其后继节点。 (前提是没有左孩子或者没有右孩子)

树的前序遍历等价于其对应二叉树的前序遍历

树的后序遍历等价于其对应二叉树的中序遍历 

前缀码:每一个码都不是另一个码的前缀。哈夫曼树左0右1构造的就是前缀码。  

(6)图

与离散数学中的简单回路相反。

  

深度优先: 

 广度优先: 

 

 这里注意,生成树是用深度优先遍历或者广度优先遍历来获取的,但最小生成树是用普利姆算法和克鲁斯卡尔算法获取的,最短路径问题是迪杰斯特拉算法。

 

克鲁斯卡尔算法: 

普利姆算法:

归并顶点,选择顶点使得进入的边的权值最小,直到所有顶点都并进来,此时一定有n - 1条边。

 

 需要注意的是:普利姆算法和迪杰斯特拉算法虽然都是归并顶点,但是普利姆算法每一步替换的值是整体到下一个点的最小值,而迪杰斯特拉算法每一步替换的值是起点到下一个点的最小值(单源最短路径)

(7)查找

主关键字:可以唯一标识一个记录。

顺序查找

 顺序存储和链式存储都可以,无论有序还是无序都行

折半查找:

必须有序,且顺序存储

折半查找判定树:

  

分块查找:

块间有序,块内无序

  

在二叉排序树删除节点时,如果其为叶子节点,则直接删除无影响;如果其只有左子树或右子树,则顺延就行;如果被删除节点既有左子树又有右子树,则用其前驱节点代替它,再删去原前驱节点。 

 

哈希表

查找效率O(1),查找效率与元素个数无关。

 

处理冲突的方法:

 

 

二、大题

1、排序

(1)直接插入排序

时间复杂度:O(n^2)        空间效率: O(1)

(2)折半插入排序

限制:必须采用顺序存储

链表可以使用直接插入排序(这样效率更高),但不能使用折半插入排序。 

(3)希尔排序

 

(4)冒泡排序(交换排序的一种) 

(5)快速排序(交换排序的一种)

(6)简单选择排序

(7)归并排序

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值