d - 数据结构实验之查找四:二分查找_【数据结构】资料
春天来了,关注我们吧!!
数据结构资料
1.栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素
B.都是先进后出
C.都是先进先出
D.没有共同点
答案:A
解析:栈的操作只允许在栈的一端进行插人和删除操作。队列的操作只允许在队列的一端进行插入操作,在另一端进行删除操作。
2.用链接方式存储的队列,在进行插入运算时( ).
A. 仅修改头指针 B. 头、尾指针都要修改
C. 仅修改尾指针 D.头、尾指针可能都要修改
答案:D
解析:我觉得题目描述不够严谨,若将题目改为“用无头结点链接方式存储的队列”,则选D更为合理一些。因为若是带头结点链接方式存储的队列,在进行插入运算时只需修改尾指针;但若是用无头结点链接方式存储的队列,在进行插入运算时,(1)队列不为空:只需修改尾指针(2)队列为空:头尾指针都需要修改。
3.以下数据结构中哪一个是非线性结构?( )
A. 队列 B. 栈 C. 线性表 D. 二叉树
答案:D
解析:(1)常用的线性结构:线性表、栈、队列、数组、串
(2)多维数组、广义表、数、图
4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3]3存放在什么位置?脚注(10)表示用10进制表示。
A.688 B.678 C.692 D.696
答案:C
解析:要想求A[3][3]的位置应先求出每个一维数组所含元素的个数,即求出n的值:644+2*n+2=676,n=(676-644-2)/2=15
则:A[3][3]的存放位置为:A[2][2]+n+1=676+15+1=692
5.树最适合用来表示( )。
A.有序数据元素 B.无序数据元素
C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据
答案:C
解析:因为树形结构很自然的就具有分支层次关系
6.二叉树的第k层的结点数最多为( ).
A.2^k-1 B.2K+1 C.2K-1 D. 2^(k-1)
答案:D
解析:嗯。。。这个。。。嗯。。。要想第K层的结点数最多则应为K-1层的二倍,因此,设第i层的结点数为a[i]
第一层:a[1]=2^0=1
第二次:a[2]=2^1=2
第三层:a[3]=2^2=4
第 k 层:a[k]=2^(k-1)
7.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( )
A. 1,2,3 B. 9,5,2,3
C. 9,5,3 D. 9,4,2,3
答案:D
解析:对于这道题,我们首先应该理解二分查找的思想:首先以整个查找表作为查找范围,用查找条件中给定值A[3]与中间位置的关键字(A[(18+1)/2]=A[9])比较,若相等,则查找成功;否则,根据比较结果缩小查找范围,如果A[3]的值小于关键字的值,根据查找表的有序性可知查找的数据元素只有可能在表的前半部分,即在左半部分子表中,所以继续对左子表进行二分查找;若A[3]的值大于中间结点的关键字值,则可以判定查找的数据元素只有可能在表的后半部分,即在右半部分子表中,所以应该继续对右子表进行二分查找。每进行一次二分查找,要么查找成功,结束查找,要么将查找范围缩小一半,如此重复,直到查找成功或查找范围缩小为空即查找失败为止。
具体的查找过程为:
第一次查找,(1+18)/2=9
第二次查找,(1+8)/2=4
第三次查找,(1+3)/2=2
第四次查找,(3+3)/2=3
8.对n个记录的文件进行快速排序,所需要的辅助存储空间大致为
A. O(1) B. O(n) C. O(log2 n) D. O(n^2)
答案:C
解析:因为快速排序是通过递归算法来完成的,递归深度约为log2 n,所以对n个记录文件进行快速排序所需的辅助存储空间为O(log2 n)
9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有( )个
A.1 B.2 C.3 D.4
答案:D
解析:55%9=1,64%9=1,46%9=1,10%9=1
10.设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。
A. 5 B. 6 C.7 D.8
答案:A
解析:连通图的定义为:在一个无向图 G 中,若从顶点i到顶点j有路径相连(当然从j到i也一定有路径),则称i和j是连通的。所以只要将这六个结点连接起来即可,因此只需要5条边。
11.下面关于线性表的叙述错误的是( )。
(A) 线性表采用顺序存储必须占用一片连续的存储空间
(B) 线性表采用链式存储不必占用一片连续的存储空间
(C) 线性表采用链式存储便于插入和删除操作的实现
(D) 线性表采用顺序存储便于插入和删除操作的实现
答案:D
解析:D.错误,顺序存储的线性表若进行插入和删除操作,需要移动插入(删除)点后的所有数据,不方便;A.正确,顺序存储的线性表类似于数组;B.正确,链式存储的线性表只需每个结点用一个指针指向下一个结点即可;C.正确,链式存储的线性表在插入和删除操作的时候只需改变指针即可。
12.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有( )个空指针域。
(A) 2m-1 (B) 2m (C) 2m+1 (D) 4m
答案:B
解析:首先说一下什么是二叉链表存储结构,树的二叉链表实现方式又称孩子兄弟表示法,以二叉链表作为树的存储结构。链表中结点的两个链域分别指向该结点的第一个孩子结点和它的下一个兄弟结点。因此,设哈夫曼树的结点总共有n个,则空指针域有:m(m个叶子结点的孩子域为空)+1(根结点的兄弟域为空)+(n-1)/2(除根结点外,其余结点中一半的结点的兄弟域为空)=2m
13.设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为( )。
(A) R-F (B) F-R (C) (R-F+M)%M (D) (F-R+M)%M
答案:C
解析:对于循环队列的头指针和尾指针,其位置关系无非两种情况:(1)R>=F,元素个数为R-F;(2)否则元素个数为(R+M-F)%M
14.设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为( )。
(A) BADC (B) BCDA (C) CDAB (D) CBDA
答案:A
解析:由前序遍历序列为CABD可知C为根结点,又根据中序遍历序列为ABCD可知A和B在C的左子树,D在C的右子树;再由中序与前序遍历都为AB的顺序可知B为A的右子树。由此可以得到此二叉树,再按后序遍历即可得到结果。
15.设某完全无向图中有n个顶点,则该完全无向图中有( )条边。
(A) n(n-1)/2 (B) n(n-1) (C) n2 (D) n2-1
答案:A
解析:首先我们应该了解完全无向图的定义:即无向图的每对不同的顶点之间都恰连有一条边相连。由此可以推出在完全无向图中任取两个顶点一定相连,有C(n,2)=n(n-1)/2种取法,即总共有C(n,2)=n(n-1)/2条边。
16.设某棵二叉树中有2000个结点,则该二叉树的最小高度为( )。
(A) 9 (B) 10 (C) 11 (D) 12
答案:C
解析:若要求有2000个结点的二叉树的最小高度,则此二叉树应为完全二叉树,由此可求出此完全二叉树的高度为:log2(2000)向下取整+1=11
17.设某有向图中有n个顶点,则该有向图对应的邻接表中有( )个表头结点。
(A) n-1 (B) n (C) n+1 (D) 2n-1
答案:B
解析:由邻接表的定义可知有n个顶点的有向图对应的邻接表中有n个表头结点。
18.设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为( )。
(A) 2,3,5,8,6 (B) 3,2,5,8,6
(C) 3,2,5,6,8 (D) 2,3,6,5,8
答案:C
解析:本题只要了解快排的思想即可选出正确答案。
19.设某数据结构的二元组形式表示为A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>},则数据结构A是( )。
(A) 线性结构 (B) 树型结构 (C) 物理结构 (D) 图型结构
答案:B
解析:根据r可知是一对多的关系,并且画出图来便可看出是树型结构。
20.下面程序的时间复杂为( )
for(i=1,s=0; i<=n; i++) {t=1;for(j=1;j<=i;j++) t=t*j;s=s+t;}
(A) O(n) (B) O(n^2) (C) O(n^3) (D) O(n^4)
答案:B
解析:双重for循环,其时间复杂度显然为O(n^2)。
21.设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为( )。
(A) q=p->next;p->data=q->data;p->next=q->next;free(q);
(B) q=p->next;q->data=p->data;p->next=q->next;free(q);
(C) q=p->next;p->next=q->next;free(q);
(D) q=p->next;p->data=q->data;free(q);
答案:A
解析:这个删除结点的方法很奇妙~.~ 其操作是将要删除结点(A)的后一个结点(B)的数据赋给要删除的结点(A),再删除(B),就相当于删除了结点A
22.设有n个待排序的记录关键字,则在堆排序中需要( )个辅助记录单元。
(A) 1 (B) n (C) nlog2n (D) n2
答案:A
解析:堆排序只需一个辅助记录单元。
23.设一组初始关键字记录关键字为(20,15,14,18,21,36,40,10),则以20为基准记录的一趟快速排序结束后的结果为( )。
(A) 10,15,14,18,20,36,40,21
(B) 10,15,14,18,20,40,36,21
(C) 10,15,14,20,18,40,36,2l
(D) 15,10,14,18,20,36,40,21
答案:A
解析:本题只要了解快排的思想即可选出正确答案。
24.设二叉排序树中有n个结点,则在二叉排序树的平均平均查找长度为( )。
(A) O(1) (B) O(log2 n) (C) (D) O(n^2)
答案:B
解析:对于二叉排序树,其平均查找的深度为O(log2 n)
25.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和表结点的个数分别为( )。
(A) n,e (B) e,n (C) 2n,e (D) n,2e
答案:D
解析:任何一条边都可以引入两个表节点
26.设某强连通图中有n个顶点,则该强连通图中至少有( )条边。
(A) n(n-1) (B) n+1 (C) n (D) n(n+1)
答案:C
解析:首先我们应该知道强连通图是指有向图中任意两点之间都有路径,所以最少情况是这n个点构成一个环.
27.设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列( )方法可以达到此目的。
(A) 快速排序 (B) 堆排序 (C) 归并排序 (D) 插入排序
答案:B
解析:达到局部有序的最快的方法是堆排序。
28.下列四种排序中( )的空间复杂度最大。
(A) 插入排序 (B) 冒泡排序 (C) 堆排序 (D) 归并排序
答案:D
解析:对于这四种排序方式的空间复杂度,可以知道其各自所需的辅助存储风别为:
插入排序(O(1)),冒泡排序(O(1)),堆排序(O(1)),归并排序(O(n))
29.设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为( )。
(A) O(n) (B) O(nlog2 n) (C) O(1) (D) O(n^2)
答案:C
解析:数组作为随机访问的数据结构,并且其可以通过下标访问元素,则其读取的平均时间复杂度为O(1)。
30.设一棵二叉树的深度为k,则该二叉树中最多有( )个结点。
(A) 2k-1 (B) 2^k (C) 2^(k-1) (D) 2^k-1
答案:D
解析:对于一棵深度为k的二叉树来说,其最多有2^k-1个结点,其第k层最大结点数为2^(k-1)个。
关注我
没道理
d - 数据结构实验之查找四:二分查找_【数据结构】资料相关推荐
- d - 数据结构实验之查找四:二分查找_数据结构与算法笔记
二分查找(上):如何用最省内存的方式实现快速查找功能? 二分查找(下):如何快速定位IP对应的省份地址? 变体一:查找第一个值等于给定值的元素 变体二:查找最后一个值等于给定值的元素 变体三:查找第一 ...
- 数据结构实验之图论四:迷宫探索_用图机器学习探索 A 股个股相关性变化
在本系列的前文 [1,2]中,我们介绍了如何使用 Python 语言图分析库 NetworkX [3] + Nebula Graph [4] 来进行中人物关系图谱分析. 在本文中我们将介绍如何使用 J ...
- 数据结构实验之图论四:迷宫探索_迷宫搜索类的双向bfs问题(例题详解)
前言 文章若有疏忽还请指正! 更多精彩还请关注公众号:bigsai 头条号:一直码农一直爽 在搜索问题中,以迷宫问题最具有代表性,无论是八皇后的回溯问题,还是dfs找出口,bfs找最短次数等等题目的问 ...
- 学生成绩管理系统利用数据结构顺序表来进行二分查找,直接插入,快速排序操作
一.实验目的 1.掌握查找的不同方法,并能用高级语言实现查找算法. 2.熟练掌握顺序表和有序表的顺序查找和二分查找方法. 3.掌握排序的不同方法,并能用高级语言实现排序算法. 4.熟练掌握顺序表的选择 ...
- 数据结构---顺序查找和二分查找
数据结构-顺序查找和二分查找 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> int n;//查找元素数组的长度 vo ...
- 【Java数据结构与算法】第九章 顺序查找、二分查找、插值查找和斐波那契查找
第九章 顺序查找.二分查找.插值查找和斐波那契查找 文章目录 第九章 顺序查找.二分查找.插值查找和斐波那契查找 一.顺序查找 1.基本介绍 2.代码实现 二.二分查找 1.基本介绍 2.代码实现 三 ...
- Java数据结构与算法 线性查找和二分查找
查找 查找(searching)是在一组数据项中找到指定的目标元素(target element)或者判定组内不存在目标的过程.要查找的数据项组有事成为查找池(search pool). 在此讨论两种 ...
- 【Golang第6章:排序和查找】golang怎么排序,golang的顺序查找和二分查找,go语言中顺序查找二分查找介绍和案例
介绍 这个是在B站上看边看视频边做的笔记,这一章是GO语言的排序和查找 有golang怎么排序,golang的顺序查找和二分查找,go语言中顺序查找二分查找介绍和案例,具体请看[文章目录] 配套视频自 ...
- 递归法实现折半查找(二分查找)
题目 递归法实现折半查找(二分查找) 分析 设立low代表数组最小端的数组下标,high代表数组最大端的数组下标,mid代表数组中间值的数组下标 查询数字number与mid进行比较,有四种情况: 1 ...
最新文章
- Go 学习笔记(16)— 函数(02)[函数签名、有名函数、匿名函数、调用匿名函数、匿名函数赋值给变量、匿名函数做回调函数]
- 转: Python集合(set)类型的操作
- 专访厦门第二医院影像科主任郭岗:基于 IBM 推出的 AI 集成解决方案,如何给医生减负增效?...
- centos系统rpm命令
- win7如何删除mariadb
- 手机页面尺寸设置(二)
- java 页面传值_java-jsp springmvc-controller 传值到页面的方法
- excel diy工具箱_我是工具控:excel最酷工具箱 — 方方格子
- VS Code 终端窗口无法输入命令的解决方案
- ODB++ 数据格式解析软件
- Wake On Lan(WOL)失败的原因
- 商业智能的研究,主要集中在哪三个方面?
- 通过字节码分析this关键字以及异常表的重要作用
- 非对称加密(RSA)详解
- Sublime Text3轻量型跨平台C/C++开发环境(上) 安装使用篇
- vue项目实现摇一摇h5
- 技术笔记:Wordpress建站,解决无法外网访问的方法
- SpringBoot 自定义全局异常处理器
- 计算机辅助英语训练新方法,一种新的计算机辅助英语教学模式
- 我的Blog文章索引::机器学习方法系列,深度学习方法系列,三十分钟理解系列等
热门文章
- 关于js中正则表达式链接
- JBPM4.4总结-嵌入自己的用户体系(集成自定义用户表)
- 《Windows via C/C++》学习笔记(二):Working with Characters and String
- 事件与委托的一点概念理解
- Python_XPath
- CSS3 calc() 函数,height: calc(100% - 70px);
- 动手学深度学习(PyTorch实现)(八)--AlexNet模型
- Function(函数)
- 求链表的倒数第m个元素
- Eclipse下载及安装hibernate插件