JavaDS——数据结构易错选择题总结

news2024/10/5 20:23:47

1. 下列关于线性链表的叙述中,正确的是( ) 

A. 各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致

B. 各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续

C. 进行插入与删除时,不需要移动表中的元素

D. 以上说法均不正确

答案:C

题目解析:

链表和顺序表(数组):

1. 元素的存储顺序和逻辑顺序

  • 顺序表(数组):元素之间既要逻辑连续,存储顺序也要连续。
  • 链表:元素之间逻辑连续,物理不连续(存储结点之间地址不连续)。

2. 存储空间是否连续

  • 顺序表(数组):存储空间一定连续。
  • 链表:存储空间不连续。

A:各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致(存储顺序可以不一致)

B:各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续(存储空间可以不连续)。

C:正确,链表进行插入与删除时,不需要移动表中元素,只需要更改结点的next引用;但顺序表进行插入与删除时,需要移动表中元素。

2. 假设你只有100Mb的内存,需要对1Gb的数据进行排序,最合适的算法是()

A. 归并排序

B. 插入排序

C. 快速排序

D. 冒泡排序

答案:A

题目解析:

外部排序:内存中放不下所有要排序的数据,需要借助外部空间(磁盘)进行排序。

应用:多路归并排序。

所以可以将1GB分为大小相等的20份,每份大小为50MB,依次将每份数据读入内存中进行排序(内部排序:快速排序等),然后在外部空间进行这20份的归并过程。

综上所述选择A选项。

3. 若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈( i =1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是( )。3.28 2 

A. top[1]+top[2]=m

B. top[1]+1=top[2]

C. top[2]-top[1]|=0

D. top[1]=top[2]

答案:B

题目解析:

栈还未满时:

stack2再加入一个新元素n:

观察此时下标的关系,得到:top[1]+1=top[2],所以选择B选项。

4. 以下哪种排序算法对(1,3,2,4,5,6,7,8,9)进行的排序最快()

A. 冒泡

B. 快排

C. 归并

D. 堆排

答案:A

题目解析:

冒泡:走两次就解决。

快排:会走多次。

归并,堆排:O(nlogn)。

近乎有序的数组中,冒泡排序是比较优秀的,当发现元素没有交换时,认为此时数组已经有序,排序退出,所以选A选项。

5. 下列叙述中错误的是( )

A. 二叉链表是二叉树的存储结构

B. 循环链表是循环队列的存储结构

C. 栈是线性结构

D. 循环队列是队列的存储结构

答案:B

题目解析:

A:Node left;

      Node right;

二叉链表就是普通二叉树的存储结构,正确。

B:循环链表是循环队列的存储结构——错误,数组是循环队列的存储结构。

C:正确。

D:正确。

所以选择B选项。

6. 下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序()7

A. 二叉排序树

B. 哈夫曼树

C. AVL树

D. 堆

答案:D

题目解析:

有序:升序或降序

A:二叉排序树和二叉搜索树是一个概念:二叉树,并且左子树上所有结点的值小于它根结点的值,右子树上所有结点的值大于它根节点的值。

B:哈夫曼树——带权值(与元素大小顺序无关)的树。B错误。

C:AVL树——平衡二分搜索树:首先是二叉搜索树,其次是平衡的,即它每一个结点的左子树的高度和右子树的高度差至多为1。

A,C:举例:如图,并没有有序,A,C错误。 

D:堆:

以最大堆为例:

满足堆中所有结点:根结点大于左右孩子。——从最大堆的任意结点出发走到根结点都是递增序列。

所以选择D选项。

7. 将整数数组(7-6-3-5-4-1-2)按照堆排序的方式原地进行升序排列,请问在第一轮排序结束之后,数组的顺序是()3.29 9

A. 2-6-3-5-4-1-7

B. 6-2-3-5-4-1-7

C. 6-5-3-2-4-1-7

D. 1-4-7-5-6-3-2

答案:C

题目解析:

因为原地进行升序排列

1. swap(0, arr, length - 1)——7,2做交换。

2. 得到最大值7。

3. 继续在剩下的元素中调整为最大堆重复上述过程。

此时不满足最大堆的性质,调整。

 

调整后如图,得到第一轮排序的结果:6,5,3,2,4,1,7。

所以本题选择C选项。

8. 下列各排序法中,最坏情况下的时间复杂度最低的是( )

A. 希尔排序

B. 快速排序

C. 堆排序

D. 冒泡排序

答案:C

题目解析:

A:插入排序的优化,时间复杂度基本上是O(n^{2}),至少是比O(nlogn)大

B:当出现大量重复·元素或者数组几乎有序时,递归树退化为链表,O(n^{2}

C:堆排序是一个非常稳定的O(nlogn)

D:O(n^{2}

所以选择C选项。

9. 若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。

A. 顺序表

B. 双链表

C. 带头结点的双循环链表

D. 单循环链表

答案:A

题目解析:

A:顺序表(数组)取元素——O(1),在数组末尾进行插入和删除——O(1)

所以选择A选项。

10. 下列数据结构具有记忆功能的是?

A. 队列

B. 循环队列

C. 栈

D. 顺序表

答案:C

题目解析:

记忆功能应用举例:浏览器的回退功能,文本编辑器的撤销操作。

栈的LIFO(先进后出)特性,也是具有记忆功能的。

所以选择C选项。

11. 对递归程序的优化的一般的手段为()

A. 尾递归优化

B. 循环优化

C. 堆栈优化

D. 停止值优化

答案:A

题目解析:

比如快速排序和归并排序:

//终止条件

(l >= r){

        return;

}

//在递归终止条件处进行优化

//当区间个数较小时,采用插入排序来优化,(r - l <= 15)—>采用插入排序

这就是尾递归优化,选择A选项。

12. 下列说法中错误的是()

A. 红黑树插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(logn)

B. B+树插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(logn)

C. Hash表插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(n)

D. 排序链表插入操作的平均时间复杂度为O(n),最坏时间复杂度为O(n)

答案:C

题目解析:

C:Hash表插入操作的平均时间复杂度为O(logn)O(1),最坏时间复杂度为O(n)。

13. 大小为MAX的循环队列中,f 为当前队头元素位置,r 为当前队尾元素位置(最后一个元素的位置),则任意时刻,队列中的元素个数为()

A. r-f

B. (r-f+MAX+1)%MAX

C. r-f+1

D. (r-f+MAX)%MAX

答案:B

题目解析:

数组长度 = MAX - 1(判断队列满,浪费一个空间)

r 为当前队尾元素位置(最后一个元素的位置)——>队尾的下一个位置

代入举例:

所以本题选择B。 

14. 下列选项中,不可能是快速排序第2趟排序结果的是 ()

A. 2,3,5,4,6,7,9

B. 2,7,5,6,4,3,9

C. 3,2,5,4,7,6,9

D. 4,2,3,5,7,6,9

答案:C

题目解析:

快速排序特点:每进行一次快排,标定点一定在最终位置。

本题进行了两次快排,则至少有两个元素到达最终位置。

C选项,只有9到达最终位置(只有一个元素到达最终位置),所以C选项是不可能的。

如有建议或者想法欢迎一起讨论学习~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】-快速排序的四种方法实现以及优化

作者&#xff1a;小树苗渴望变成参天大树 作者宣言&#xff1a;认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点 点 关 注 吧&#xff01; 快速排序前言一、hoare法&#xff08;左右指针法&#xff09;二、挖坑法三、前后指针法…

Midjourney AI绘画工具使用保姆级教程

系列文章目录 之后补充 文章目录系列文章目录写在前面一、Midjourney是什么&#xff1f;二、使用步骤1.完成Discord注册2.打开Midjourney官网3.开始画图后记写在前面 据悉&#xff0c;自3月30日&#xff0c;Midjourney已叫停免费试用服务&#xff0c;如上图所示。 创始人表示原…

代码随想录_226翻转二叉树、101对称二叉树

leetcode 226. 翻转二叉树 ​​​226. 翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a;r…

【Android开发】App Bundle技术之动态功能模块

前言 自 2021 年 8 月起&#xff0c;Google Play 将开始要求新应用使用 Android App Bundle 进行发布。该格式将取代 APK 作为标准发布格式。虽然这个政策目前还无法影响到国内应用&#xff0c;但是作为Android开发者&#xff0c;对于新的动态还是要有一定的认识。 Android A…

产品经理必读|用户研究方法总结②

随着互联网的发展&#xff0c;用户体验设计逐渐成为了产品设计中不可或缺的一部分&#xff0c;而要进行好的用户体验设计&#xff0c;就需要进行用研。但是&#xff0c;如何选用合适的用研方法&#xff0c;却是很多产品经理和设计师面临的难题。下面&#xff0c;就让我们来探讨…

3.3 泰勒公式

学习目标&#xff1a; 复习微积分基础知识。泰勒公式是微积分的一个重要应用&#xff0c;因此在学习泰勒公式之前&#xff0c;需要复习微积分的基本概念和技能&#xff0c;包括函数的导数和微分、极限、定积分等。可以参考MIT的微积分课程进行复习和加强。 学习泰勒级数和泰勒…

ftp传输文件大小有限制吗 ftp文件传输工具有哪些

这两年&#xff0c;线上办公逐渐常态化&#xff0c;相信大家对ftp这个概念也比较熟悉了。ftp&#xff0c;即文件传输协议&#xff0c;线上办公就是用ftp软件进行文件传输的。那ftp传输文件大小有限制吗,ftp文件传输工具有哪些我们一起来看看。 一、ftp传输文件大小有限制吗 f…

还在手动测试?那是那还不知道Python自动化测试的强大之处

目录&#xff1a;导读 引言 1.关于自动化测试的概述 2.Selenium元素定位实战 写在最后 引言 Python自动化测试是当今广泛使用的自动化测试技术之一。它的简单易学、开放源代码和丰富的第三方库使得其成为程序员和测试人员的首选工具之一。 Python自动化测试不仅可以帮助我…

【LeetCode: 剑指 Offer 60. n个骰子的点数 | 数学+ 暴力递归=>记忆化搜索=>动态规划】

&#x1f34e;作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域新星创作者&#x1f3c6;&#xff0c;保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享&#x1f48e;&#x1f48e;&#x1f48e; &#x1f34e;座右…

git的操作使用三大块,常用的命令都在这里简单明了

码云网址&#xff1a;Gitee - 企业级 DevOps 研发效能平台 注册登录 创建仓库 仓库名称&#xff1a;必填&#xff0c;每个仓库都需要有一个名称&#xff0c;同一个码云账号下的仓库名称不能重复 路径&#xff1a;访问远程仓库时会使用到&#xff0c;一般无需手动指定&#xf…

C. Pinkie Pie Eats Patty-cakes(二分)

Problem - C - Codeforces 小粉饼买了一袋不同馅料的馅饼饼!但并不是所有的馅饼饼在馅料上都各不相同。换句话说&#xff0c;这个袋子里有一些馅料相同的馅饼。小粉派一个接一个地吃蛋糕。她喜欢玩&#xff0c;所以她决定不只是吃馅饼蛋糕&#xff0c;而是尽量不经常吃同样馅料…

Android 性能优化——ANR监控与解决

作者&#xff1a;Drummor 1 哪来的ANR ANR(Application Not responding):如果 Android 应用的界面线程处于阻塞状态的时间过长&#xff0c;会触发“应用无响应”(ANR) 错误。如果应用位于前台&#xff0c;系统会向用户显示一个对话框。ANR 对话框会为用户提供强制退出应用的选项…

Mybatis03学习笔记

目录 使用注解开发 设置事务自动提交 mybatis运行原理 注解CRUD lombok使用&#xff08;偷懒神器&#xff0c;大神都不建议使用&#xff09; 复杂查询环境&#xff08;多对一&#xff09; 复杂查询环境&#xff08;一对多&#xff09; 动态sql环境搭建 动态sql常用标签…

Unity Game FrameWork—模块使用—对象池分析

官方说明&#xff1a;提供对象缓存池的功能&#xff0c;避免频繁地创建和销毁各种游戏对象&#xff0c;提高游戏性能。除了 Game Framework 自身使用了对象池&#xff0c;用户还可以很方便地创建和管理自己的对象池。 下图是Demo中用到的对象池&#xff0c;所有的实体以及UI都使…

SpringBoot集成ChatGPT实现AI聊天

前言 ChatGPT已经组件放开了&#xff0c;现在都可以基于它写插件了。但是说实话我还真没想到可以用它干嘛&#xff0c;也许可以用它结合文字语音开发一个老人小孩需要的智能的说话陪伴啥的。 今天我就先分享下SpringBoot结合ChatGPT&#xff0c;先看看对话效果。 一、依…

清明-前端

明天面快手前端&#xff0c;正好借这个机会&#xff0c;做做毕设吧。顺便整理一下前端的面试内容。 何良蓉说&#xff0c;他觉得学的时候开心&#xff0c;玩的时候也开心。我觉得不开心。可能他掌握生活的秘密了吧。 如果他没对我撒谎的话。 看了眼别人的面经&#xff0c;就知…

一键禁用系统防火墙

你也可以通过批处理命令来实现 桌面空白地方右键选择新建记事本将下面代码复制到记事本里&#xff0c;然后保存为.bat类型的文件&#xff1b;保存完成运行即可。 Echo off Echo -------------------------------------------------------------------------- Echo 禁用系统防火…

【CSS】定位 ② ( 静态定位 | 相对定位 )

文章目录一、静态定位二、相对定位1、标准流下的盒子模型代码示例2、相对定位下的盒子模型代码示例一、静态定位 CSS 中的 静态定位 是 默认的定位方式 , 就是无定位 , 设置该定位方式 , 定位盒子不生效 ; 为盒子模型 设置 静态定位 模式 , 该 盒子模型 就会按照标准流的方式 …

【面试】spring中怎么解决循环依赖问题?

文章目录前言1、什么是循环依赖&#xff1f;2、Spring怎么解决循环依赖3、如何解决&#xff1f;4、怎么样的循环依赖无法处理?5、总结:前言 思考: 什么是循环依赖&#xff1f;Spring怎么解决循环依赖Spring对于循环依赖无法解决的场景 1、什么是循环依赖&#xff1f; 循环…

Run Loops

Run Loops 运行循环是与线程相关的基本基础结构的一部分。运行循环是事件处理循环&#xff0c;用于安排工作并协调传入事件的接收。运行循环的目的是在有工作要做时让线程保持忙碌&#xff0c;在没有工作要做时让线程休眠。 运行循环管理不是完全自动的。您仍然必须设计线程代…