中级软件设计师知识点整理:数据结构与算法基础

  1. 互异的非平凡子串(非空且不同于本身) 因为他说的是子串,而不是任意字符的随意组合,所以可以列举可得,长度是n的话,n-1长度的有2个,n-2长度的有3个。。。长度为1的有n个,所以是 n+n-1+…2 =(n+2)*(n-1)/2\
  2. 哈夫曼树
    假设某消息中只包含7个字符{a,b,c,d,e,f,g},这7个字符在消息中出现的次数为{5,24,8,17,34,4,13},利用哈夫曼树(最优二叉树)为该消息中的字符构造符合前缀编码要求的不等长编码。各字符的编码长度分别为( )。
    在这里插入图片描述
  3. 设某二叉树采用二叉链表表示(即结点的两个指针分别指示左、右孩子)。当该二叉树包含k个结点时,其二叉链表结点中必有( )个空的孩子指针。 K+1
  4. 无向连通图 :1.任意两个顶点之间存在路径 2.从G中任意顶点出发可以遍历图中所有顶点 3.G的邻接矩阵是对称矩阵 但是G中任意两个顶点不一定都存在边
  5. 最长公共子序列的时间复杂度 首先是 暴力检索:长度为n的序列有2^n 个子序列所有要O(N*2^N) 而最优子结构的话 就是O(N*2^N)
  6. 通过先序和中序求解树
  7. 小根堆就是 父节点都小于子节点
  8. 二分查找,有个细节就是 如果是 1234这种的 ,先查找的是2
  9. 二维数组 当i=j的时候,按行和按列的存储方式相同
  10. 拓扑排序
    在这里插入图片描述
  11. 以下关于二叉排序树(或二叉查找树、二叉搜索树)的叙述中,正确的是( )。
    A.对二叉排序树进行先序、中序和后序遍历,都得到结点关键字的有序序列
    B.含有n个结点的二叉排序树高度为⌊log2n⌋+1
    C.从根到任意一个叶子结点的路径上,结点的关键字呈现有序排列的特点
    D.从左到右排列同层次的结点,其关键字呈现有序排列的特点

A二叉排序树就是左子树小于根小于右子树 所以后序遍历不会有序
B 空树就不是
C. 不会有序的 如果是左拐右拐的 就一下子变小 一下子变大了
12. 四个矩阵分别为:
26 63 310 103
先计算:M1M2 及M3M4,计算次数分别为:
263=36,3103=90。
然后结果相乘,计算次数为:
233=18。
36+90+18=144。
13. 二叉树的关键码序列 老老实实算就行了
14. 图的遍历 :
A.图的遍历是从给定的源点出发对每一个顶点仅访问一次的过程
B.图的深度优先遍历方法不适用于无向图
C.使用队列对图进行广度优先遍历
D.图中有回路时则无法进行遍历
图的遍历是从某一个顶点出发,而不是特定的源点,图的深度遍历 队列的特点是先进先出,广度优先刚好合适

  1. 已知算法A的运行时间函数为T(n)=8T(n/2)+n2,其中n表示问题的规模,则该算法的时间复杂度为( )。另已知算法B的运行时间函数为T(n)=XT(n/4)+n2,其中n表示问题的规模。对充分大的n,若要算法B比算法A快,则X的最大值为( )。
    (62)A.θ(n)
    B.θ(nlgn)
    C.θ(n2)
    D.θ(n3)

(63)A.15
B.17
C.63
D.65
试题分析
本题需要用到特定形式的递归式分析法:
在这里插入图片描述
在本题中,a=8,b=2,故符合(1)的情况。
时间复杂度为:O(n3)。
a=16,b=4
16. 计数排序是非比较的排序,优势在于一定范围内的整数排序
17. (Q.rear-Q.front+M)%M为队列中的元素个数(即队列长度)。
18. B.45,30,18,25,10 问题出在第三步 当发现大于18的时候才去找的25 这个时候就不可能出现10了
19. 简单选择排序 一般就是选择一个最小的数,然后和第一个位置进行交换,再选择第二小的数 和第二个位置进行交换 所以 21 48 21 63 17* 就体现了他的不稳定性 当第一趟17和21 交换的时候
20. KMP
在字符串的KMP模式匹配算法中,需先求解模式串的next函数值,其定义如下式所示,j表示模式串中字符的序号(从1开始)。若模式串p为“abaac”,则其next函数值为( )。
在这里插入图片描述

(60)A.01234
B.01122
C.01211
D.01111
试题分析
本题考查字符串的模式匹配运算知识。
KMP 是进行字符串模式匹配运算效率较高的算法。根据对 next 函数的定义,模式 串前两个字符的 next 值为 0、1。对于第3 个字符 "a",其在模式串中的前缀为"ab", 从该子串找不出前缀和后缀相同的部分,因此,根据定义,该位置字符的next 值为 1。
对于第 4 个字符"a" ,其在模式串中的前缀为" aba",该子串只有长度为1 的前缀"a" 和后缀 "a" 相同,根据定义,该位置字符的 next 值为 2。
对于第 5 个字符 "a",其在模式串中的前缀为"abaa0",该子串只有长度为 1 的前缀"a" 和后缀 "a" 相同,根据定义,该位置字符的 next 值为 2。
 综上可得,模式串 "abaac" 的 next 函数值为 01122。
试题答案

(60)B
21. 双端队列,元素进出队列都必须在同一个端口
在这里插入图片描述
22. 时间复杂度
在某个算法时间复杂度递归式T(n)=T(n-1)+n,其中n为问题的规模,则该算法的渐进时间复杂度为( ),若问题的规模增加了16倍,则运行时间增加( )倍。
(62)A.Θ(n)
B.Θ(nlgn)
C.Θ(n2)
D.Θ(n2lgn)

(63)A.16
B.64
C.256
D.1024
试题分析
由于递归式为:T(n)=T(n-1)+n。我们可以把一个规模为n的时间复杂度算出来。
分析过程为:
T(n)=T(n-1)+n;
T(n-1)=T(n-2)+n-1;
T(n-2)=T(n-3)+n-2;

T(n)=1+2+…+n-1+n。
这是一个典型的等差数列。用数列求和公式有:((1+n)*n)/2。这样就求得时间复杂度为:Θ(n2)。
后面一问则有:
当问题规模为n时,时间复杂度Θ(n2)。
当x=16n时,时间复杂度Θ(x2)=Θ((16n)2)=Θ(256n2)。
试题答案
(62)C(63)C
23. 如果网比较稠密的话,用prim算法比较好
24. 哈夫曼树叶子节点的权值越小,则距离树根越远。叶子结点的权值越大,则距离树根越近
25. 各种算法:

分治法的设计思想是将一个难以直接解决的大问题分解成一些规模较少的相同问题以便各个击破,分而治之。
动态规划法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划法求解的问题,经分解得到的子问题往往不是独立的。若用分治法来解这类问题,则相同的子问题会被求解多次,以至于最后解决原问题需要耗费指数级时间。
贪心法经常用于解决最优化问题,但他的最优往往是从局部最优来考虑的,每一步都选最优的方案,但这种方案不一定能得到整体上的最优解。
回溯法是一种既带有系统性又带有跳跃性的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根节点出发搜索解空间树。
题目描述中提到,需要解决的问题具有最优子结构性质,且求解过程中子问题被重复求解,这种情况下如果采用分治法,效率会很低,所以应采用动态规划法。而“以深度优先的方式搜索解空间”则明显是在采用回溯法。

  1. B-树
    下图所示为一棵M阶B-树,M最有可能的值为( )。
    看到了最下面有四个子树 所以最有可能是4阶的
    在这里插入图片描述

  2. 对于完全图来说,邻接矩阵的存储效率是得有100%

  3. 若二维数组arr[1…M,1…N]的首地址为base,数组元素按列存储且每个元素占用K个存储单元,则元素arr[i,j]在该数组空间的地址为(C.base+((j-1)*M+i-1)*K )。

  4. 单向循环链表存储的特点 是可以从表中任意结点出发都能遍历整个链表,另外便于元素的结点删除和插入

  5. 下三角矩阵 按行压缩 这种题就特殊值代入法就完事了,主要下标从什么开始

  6. 最优二叉树 就是哈夫曼树 他不满足任意结点 左右子树高度差绝对值不超过1 ,而完全二叉树满足这个条件

  7. 用插入排序和归并排序算法对数组<3,1,4,1,5,9,6,5>进行从小到大排序,则分别需要进行( )次数组元素之间的比较。
    在这里插入图片描述
    在这里插入图片描述

  8. 己知一棵度为3的树(一个结点的度是指其子树的数目,树的度是指该树中所有结点的度的最大值)中有5个度为1的结点, 4个度为2的结点,2个度为3的结点,那么,该树中的叶子结点数目为( )。
    5+4+2+X=51+42+2*3+1
    解得 x等于9

  9. 贪心方法是不能保证 0-1背包问题的最优解

  10. 还有代码填空题、

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值