首页 > 其他分享 >数据结构刷题2023.02.27小记

数据结构刷题2023.02.27小记

时间:2023-02-27 12:34:13浏览次数:42  
标签:27 2023.02 链表 算法 搜索 双链 排序 复杂度 刷题

单循环链表

A
从表中任一结点出发都能扫描到整个链表
B
不再需要头指针了
C
在进行插入、删除操作时,能更好地保证链表不断开
D
已知某个结点的位置后,能够容易找到它的直接前趋
正确答案 A

归并排序相对于快速排序的优点不包括()

A:归并排序是稳定排序,快速排序是不稳定排序,故A对。
B:归并排序的最坏时间复杂度为O(nlogn),而快速排序的最坏时间复杂度为O(n^2),故B对。
C:归并排序需要额外的O(n)的空间,快速排序需要额外的O(1)的空间,故C错。
D:归并排序的平均时间复杂度和最坏时间复杂度均为O(nlogn),不会退化;
快速排序的平均时间复杂度为O(nlogn),最坏时间复杂度为O(n^2),会退化;
故D对。

对给定的关键字序列110, 119, 007, 911, 114, 120, 122 进行基数排序, 则第 2 趟分配收集后得到的关键字序列是( )。

基数排序一般从最低有效位开始即个位开始排序,
第一趟排出110,120,911,122,114,007,119,
第二趟按照次高有效位即十位排序,
第二趟排出007,110,911,114,119,120,122.
基数排序与关键字的位数有关,但也是一种稳定排序。

在快速排序中,要使最坏情况的空间复杂度为O(log2n )则要对快速排序作( )修改。

A
划分元素为三者取中
B
采用表排序
C
先排最小集合
D
先排大集合

快速排序的思想:
先从数列中取出一个数作为基准数
分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边
再对左右区间重复第二步,直到各区间只有一个数
最优的情况下空间复杂度为:O(log2n) ;每一次都平分数组的情况,基准数尽量为中间数。
快速排序的最坏情形是数组为正序或逆序,如果pivot总是选择第一个元素,那么每次划分只得到一个比上一次划分少一个记录的子序列,此时需要执行次递归调用。显然,采用A(划分元素为三者居中),能够将每次待排序的part尽可能一分为二,从而使得递归深度为),即空间复杂度为

在一般包含n个节点的二叉搜索树中查找的最差时间复杂度是?

A
O(log(n))
B
O(n)
C
O(n^2)
D
O(1)
二叉搜索树可以不平衡

关于双链表的搜索给定元素操作的说法正确的是?

A
从两个方向搜索双链表,比从一个方向搜索双链表的速度慢
B
从两个方向搜索双链表,比从一个方向搜索双链表的方差要小
C
从两个方向搜索双链表,比从一个方向搜索双链表速度要快
D
以上说法都不正确
B 如果链表数据是无序的,则单向搜索与双向搜索平均速度相同 如果链表是有序的,而要搜索的数据距离最小值(最大值)较近,这种情况下双向搜索平均速度更快。 因此双向搜索更稳定,方差更小

B树

B树:二叉树
B-树:是一种多路搜索树
B+树:B+树是B-树的变体,也是一种多路搜索树:非叶子结点的子树指针与关键字个数相同
B*树: 是B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针;

有关希尔排序算法叙述正确的是( )

A
最后一次的步长增量一定为1
B
分割后子序列内部的排序算法是直接插入排序
C
分割后子序列内部的排序算法是直接选择排序
D
希尔排序是稳定排序算法
正确答案:AB

下面算法中可以判断出一个有向图是否有环的是:()

A
求最短路径
B
深度优先遍历
C
广度优先遍历
D
拓扑排序
有向图是否有环的判定算法,主要有深度优先和拓扑排序两种方法。

标签:27,2023.02,链表,算法,搜索,双链,排序,复杂度,刷题
From: https://www.cnblogs.com/jiushijiushi/p/17159231.html

相关文章

  • python Numpy数组2.27
    #成员类型转换arr.astype(np.float_)#转换数组对象成员的类型为float,形状不变。#形状转换arr.resize(shape)#返回值是一个None,不能引用内部的属性arr.reshape(shape)#......
  • 20230227-华为防火墙双机热备配置
    一、双机热备主要涉及到三个协议:VRRP:两台防火墙共享一个虚拟IP(VRRP只支持两台防火墙,不支持多台),同一个VRRP组的两个接口通过协商确定主(master)和备(backup)状态,只有主状态的防......
  • java学习日记20230227-java学习方法/转义字符/注释
    Java学习方法学习java基本原理和基本语法快速入门(基本程序CRUD)研究技术的注意事项,使用细节,使用规范,如何优化JAVA转义字符\t:一个制表位,实现对......
  • 2月27號任務
    第一個,找一個UE4socket聊天客戶端UE4gameMODE同步UE4登陆界面用户,密码后端需要,mysql数据库。异步调用,回显等待房间其他用户,看到其他用户消息队列,订阅同一个房......
  • 算法刷题 Day 56 | ● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结
    583.两个字符串的删除操作本题和动态规划:115.不同的子序列相比,其实就是两个字符串都可以删除了,情况虽说复杂一些,但整体思路是不变的。https://programmercarl.com/0......
  • 27.报表高级分组函数
    --group函数复习hr@ORCLPDB012023-02-2619:55:19>selectavg(salary),stddev(salary),count(commission_pct),max(hire_date)2fromemployees3wherejob_id......
  • Java刷题常用的数据结构总结
    (Java刷题常用的数据结构总结)1.基础运算//int型相关操作Integer.INT_MAX;//int型最大值Integer.INT_MIN;//int型最小值longname;//注意:没有c语言里面的longlong(i......
  • Java刷题常用的数据结构总结
    目录1.基础运算2.字符串类3.数组类与链表4.栈和队列5.字典类6.树1.基础运算//int型相关操作Integer.INT_MAX;//int型最大值Integer.INT_MIN;//int型最小值long......
  • Hive 刷题——区间合并
    需求描述给定多个时间段,每个时间段分为开始时间、结束时间,将相互重叠的多个时间段合并为一个区间。--数据:id、开始时间、结束时间10011618100217191003293210......
  • 刷题疑问
    1.K个链表合并,新建的节点怎么样能不使得内存泄漏;以及在使用priority_queue的时候,compare二元谓词、仿函数怎么使用来?template<classT,classContainer=vector<T>,......