摘要:对于【软件设计师】软考考试而言,试题无疑是最重要的学习资料之一。在软考备考过程中,吃透试题、掌握试题所考知识点、熟悉试题的出题思路,对我们提升分数的效果是最明显的,通过对试题的反复练习,还可以查漏补缺。今天,给大家带来【2023年5月软件设计师 模拟一 上午】部分试题的详解,一起来看看吧~



1、分治算法设计技术(58)。
A、一般由三个步骤组成:问题划分、递归求解、合并解
B、一定是用递归技术来实现
C、将问题划分为多个规模相等的子问题
D、划分代价很小而合并代价很大

答案:A
答题解析:

本题考查算法设计技术。

分治方法是一种重要的算法设计技术(设计策略),该策略将原问题划分成n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题;然后再合并其结果,最终得到原问题的解。分治算法往往用递归技术来实现,但并非必须。分治算法最理想的情况是划分为k个规模相等的子问题,但很多时候往往不能均匀地划分子问题。分治算法的代价在划分子问题和合并子问题的解上,根据不同的问题,划分的代价和合并的代价有所不同。例如归并排序中,主要的计算代价在合并解上,而在快速排序中,主要的计算代价在划分子问题上。



2、用插入排序和归并排序算法对数组<3,1,4,1,5,9,6,5>进行从小到大排序,则分别需要进行(59)次数组元素之间的比较。
A、12,14
B、10,14
C、12,16
D、10,16

答案:A
答题解析:

本题考查排序算法。

插入排序算法的基本思想是将待排序数组分为两个部分,已排好序部分和未排序部分。其主要步骤为:开始时,第一个元素在已排好序部分中,其余元素在未排序部分。然后依次从未排序部分中取出第一个元素,从后向前与排好序部分的元素进行比较并将其插入到已排好序部分的正确位置。直到所有元素排好序。

归并排序的基本思想是将待排序数组划分为子问题,对子问题求解,然后合并解。其主要步骤为:将数组分为两个相同规模的子数组,分别包含前n/2个元素和后n/2个元素;递归地排序这两个子数组;合并排好序的两个子数组,依次比较两个排好序的子数组的元素,得到整个数组的排好序的序列。

根据上述算法思想和算法步骤,可以得到题中实例的比较次数分别为12和14。



3、在(60)中,任意一个结点的左、右子树的高度之差的绝对值不超过1。
A、完全二叉树
B、二叉排序树
C、线索二叉树
D、最优二叉树

答案:A
答题解析:

本题考查二叉树的基本概念。

在平衡二叉树中,任意一个结点的左、右子树的高度之差的绝对值不超过1。

虽然在结构上都符合二叉树的定义,但完全二叉树、线索二叉树、二叉排序树与最优二叉树的应用场合和概念都不同。

线索二叉树与二叉树的遍历运算相关,是一种存储结构。

二叉排序树的结构与给定的初始关键码序列相关。

最优二叉树(即哈夫曼树)是一类带权路径长度最短的二叉树,由给定的一个权值序列构造。

线索二叉树、二叉排序树和最优二叉树在结构上都不要求是平衡二叉树。

在完全二叉树中,去掉最后一层后就是满二叉树,而且最后一层上的叶子结点必须从该层的最左边开始排列,满足任意一个结点的左、右子树的高度之差的绝对值不超过1的条件,因此在形态上是一个平衡的二叉树。



查看完整试题>>>