当前位置: 首页 > news >正文

数据结构笔试选择题:题组1

题目(共8小题)

1.(单选)有以下关键字序列(21,40,52,45,29,12,02,66),H(K)=K%11。试在0~10的散列空地址空间中,用线性探测再散列方法处理冲突,则等概率下查找成功的平均查找长度为

        A. 3/4                B. 2/3                C. 4/3                D. 3/2

2.(单选)一个树高为6(根节点高度为1)的平衡二叉树,节点数可能是

        A. 32                B. 16                C. 128                D. 64

3.(单选)关键字序列是 {12, 11, 19, 23, 1, 6, 10},哈希函数是 H(key) = key MOD 11。用链地址法构造哈希表,哈希地址为 1 的链中有多少个记录?

        A. 5                B. 7                C. 3                D. 4

4.(单选)以下程序是用辗转相除法来计算两个非负数之间的最大公约数:

long long gcd(long long x, long long y){if(y==0)return x;else return gcd(y, x%y);
}

我们假设x,y中最大的那个数的长度为n,基本运算时间复杂度是O(1),那么该程序的时间复杂度为
A. O(1)                B. O(log n)                C. O(n)                D. O(n^2)

5.(多选)以下排序算法时间复杂度为 O(n log n) 的是

        A. 快速排序                B. 冒泡排序                C. 插入排序                D. 堆排序

6.(多选)已知中序遍历的序列是abcdef,则高度最小的二叉树的叶子节点可能是

        A. a, c, f                B. a, c, e                C. c, d, f                D. a, d, f

7.(填空)输入序列为1,2,3,经过栈的作用后,可以得到(  )种不同的输出序列。

8.(填空)若初始序列为gbfcdae,那么至少需要(  )次两两交换,才能使该序列变为abcdefg。任给一个自由a-g这7个字母组成的排列,最坏的情况下需要至少(  )次两两交换,才能使序列变为abcdefg。

解答

1.【答案】D

【解析】根据给定的关键字序列(21, 40, 52, 45, 29, 12, 02, 66)和哈希函数 H(K) = K % 11,使用线性探测再散列处理冲突,在0~10的散列地址空间中,计算等概率下查找成功的平均查找长度(ASL)。

插入过程模拟:

  • H(21) = 10 → 位置10插入21,比较1次

  • H(40) = 7 → 位置7插入40,比较1次

  • H(52) = 8 → 位置8插入52,比较1次

  • H(45) = 1 → 位置1插入45,比较1次

  • H(29) = 7 → 位置7有冲突,线性探测位置8、9,位置9插入29,比较3次

  • H(12) = 1 → 位置1有冲突,线性探测位置2,位置2插入12,比较2次

  • H(02) = 2 → 位置2有冲突,线性探测位置3,位置3插入02,比较2次

  • H(66) = 0 → 位置0插入66,比较1次

查找成功的比较次数:

  • 查找21:比较1次

  • 查找40:比较1次

  • 查找52:比较1次

  • 查找45:比较1次

  • 查找29:比较3次

  • 查找12:比较2次

  • 查找02:比较2次

  • 查找66:比较1次

总比较次数 = 1 + 1 + 1 + 1 + 3 + 2 + 2 + 1 = 12

关键字个数 = 8

平均查找长度(ASL) = 12 / 8 = 3/2

因此,正确答案是选项 D. 3/2。

2.【答案】A

【解析】题目是关于树高为6(根节点高度为1)的平衡二叉树的节点数。平衡二叉树(如AVL树)的节点数对于给定高度有一个范围。对于高度h,最小节点数由递推关系 N(h)=N(h−1)+N(h−2)+1决定,其中 N(1)=1, N(2)=2。计算高度6的最小节点数:

  • N(3)=N(2)+N(1)+1=2+1+1=4

  • N(4)=N(3)+N(2)+1=4+2+1=7

  • N(5)=N(4)+N(3)+1=7+4+1=12

  • N(6)=N(5)+N(4)+1=12+7+1=20

最大节点数对应于完全二叉树,节点数为 2^h-1。对于高度6,最大节点数为 2^6-1=63

因此,高度为6的平衡二叉树节点数范围是20到63。所以,节点数可能是32,正确答案是A. 32。

3.【答案】C

【解析】根据给定的关键字序列 {12, 11, 19, 23, 1, 6, 10} 和哈希函数 H(key) = key MOD 11,使用链地址法构造哈希表时,需要计算每个关键字的哈希地址,并找出哈希地址为 1 的链中的记录数量。计算每个关键字的哈希地址:

  • H(12) = 12 MOD 11 = 1

  • H(11) = 11 MOD 11 = 0

  • H(19) = 19 MOD 11 = 8

  • H(23) = 23 MOD 11 = 1

  • H(1) = 1 MOD 11 = 1

  • H(6) = 6 MOD 11 = 6

  • H(10) = 10 MOD 11 = 10

哈希地址为 1 的关键字有:12、23、1,共 3 个记录。

因此,哈希地址为 1 的链中有 3 个记录,对应选项 C。

4.【答案】C

【解析】根据给定的代码和问题描述,程序使用辗转相除法(欧几里得算法)计算两个非负数的最大公约数。假设x和y中最大的数的长度为n(即位数),基本运算时间复杂度为O(1)。

辗转相除法的时间复杂度取决于递归调用的次数。在最坏情况下(如连续斐波那契数),递归次数为O(log min(x, y))。由于最大数的长度为n,即最大数N ≈ 10^n(或以2为底,但大O表示法中对数底数不影响复杂度级别),因此log min(x, y) ≤ log N = O(n)。这意味着递归次数与n成线性关系。

因此,该程序的时间复杂度为O(n)。

5.【答案】AD

【解析】根据排序算法的时间复杂度分析:

  • ​快速排序(A)​​:平均时间复杂度为 O(n log n),符合条件。

  • ​堆排序(D)​​:时间复杂度为 O(n log n),符合条件。

  • ​冒泡排序(B)​​和​​插入排序(C)​​的时间复杂度均为 O(n²),不符合条件。

因此,正确答案是 ​​A 和 D​​。

6.【答案】ABD

【解析】根据中序遍历序列为abcdef,构建高度最小的二叉树(高度为3),可能的结构有两种情况:

  1. ​根节点为c​​:左子树包含a和b,右子树包含d、e、f。右子树为平衡结构(根为e,左孩子d,右孩子f)。左子树有两种可能:

    • 左子树根为a,右孩子b → 叶子节点为b、d、f。

    • 左子树根为b,左孩子a → 叶子节点为a、d、f。

      因此,叶子节点可能为{a, d, f}(对应选项D)。

  2. ​根节点为d​​:左子树包含a、b、c,右子树包含e、f。左子树为平衡结构(根为b,左孩子a,右孩子c)。右子树有两种可能:

    • 右子树根为e,右孩子f → 叶子节点为a、c、f(对应选项A)。

    • 右子树根为f,左孩子e → 叶子节点为a、c、e(对应选项B)。

选项C(c, d, f)不可能出现,因为在任何高度最小的树结构中,c和d不能同时为叶子节点(根为c时d是叶子但c不是,根为d时c是叶子但d不是)。

因此,可能出现的叶子节点组合为选项A、B、D。

7.【答案】5

【解析】根据栈的后进先出(LIFO)特性,输入序列为1,2,3时,所有可能的输出序列可以通过枚举所有合法的入栈和出栈操作得到。可能的输出序列有5种:

  1. 1,2,3

  2. 1,3,2

  3. 2,1,3

  4. 2,3,1

  5. 3,2,1

因此,经过栈的作用后可以得到​​5​​种不同的输出序列。

8.【答案】5   6

【解析】对于初始序列 "gbfcdae",将其转换为 "abcdefg" 所需的最少两两交换次数可以通过计算排列的循环分解得出。当前序列对应的置换循环分解为两个循环:一个长度为6的循环 (1,7,5,4,3,6) 和一个长度为1的循环 (2)。因此,最少交换次数为 7 - 2 = 5。

对于任意一个由 a-g 这7个字母组成的排列,最坏情况下的最少两两交换次数发生在排列为一个单循环时,所需交换次数为 7 - 1 = 6。

因此,第一个空填 5,第二个空填 6。

http://www.dtcms.com/a/394784.html

相关文章:

  • 前端基础:从0到1实现简单网页效果(一)
  • 数据结构|图论:从数据结构到工程实践的核心引擎
  • AI赋能个人效能提升:实战演练工作规划、项目复盘与学习发展
  • 7. Linux RAID 存储技术
  • iOS 上架 App 费用详解 苹果应用发布成本、App Store 上架收费标准、开发者账号与审核实战经验
  • kafka 2.12_3.9.1 版本修复 Apache Commons BeanUtils 访问控制错误漏洞(CVE-2025-48734)
  • 二分查找经典——力扣153.寻找旋转排序数组中的最小值
  • 离散数学之命题逻辑
  • 【Linux命令从入门到精通系列指南】ping 命令详解:网络连通性诊断的终极工具
  • 游戏UI告别“贴图”时代:用Adobe XD构建“活”的设计系统
  • NXP - 用MCUXpresso IDE导入lpcopen_2_10_lpcxpresso_nxp_lpcxpresso_1769.zip中的工程
  • ✅ Python+Django租房推荐系统 双协同过滤+Echarts可视化 租房系统 推荐算法 全栈开发(建议收藏)✅
  • Django入门-3.公共视图
  • 【 设计模式 | 结构型模式 代理模式 】
  • 小杰机器学习高级(five)——分类算法的评估标准
  • IS-IS 中同时收到 L1 和 L2 的 LSP 时,是否优选 L1
  • 【开源】基于STM32的智能车尾灯
  • 电子电气架构 --- 软件开发与产品系统集成流程(下)
  • Ubuntu系统目录架构是怎么样的
  • 自动驾驶仿真之“场景交互”技术研究
  • 《AI管家还是数字化身?—— 一种面向未来的个人智能架构构想》
  • AI提升工业生产制造安全,基于YOLOv9全系列【yolov9/t/s/m/c/e】参数模型开发构建工业生产制造加工场景下工业设备泄漏智能化检测识别预警系统
  • 深度学习(十一):深度神经网络和前向传播
  • js立即执行函数的几种写法
  • RecyclerView里更新列表数是不想让header也刷新,怎么处理
  • C#/.NET/.NET Core技术前沿周刊 | 第 55 期(2025年9.15-9.21)
  • 减少实验烦恼,革新实验效率——PFA塑料容量瓶降低实验成本与风险
  • 留给石头科技的赛道不多了
  • 基于卷积神经网络的人车识别技术:从原理突破到场景重构的深度探索
  • 信用免押租赁服务:重构消费信任体系的全球增长引擎