数据结构与算法Python版-第七周测验

1单选(2分)
以下关于冒泡和选择排序算法的叙述何者正确?
A. 空间复杂度上,冒泡排序的复杂度较低
B. 平均时间复杂度上,冒泡排序的复杂度较低
C. 空间复杂度上,选择排序的复杂度较低
D. 其它选项皆不正确。
正确答案:D
解析: D、两者均有O(N^2)的时间复杂度和O(1)的空间复杂度。

2单选(2分)
以下关于归并和快速排序算法的叙述何者正确?
A. 平均时间复杂度上,归并排序的复杂度较低
B. 平均时间复杂度上,快速排序的复杂度较低
C. 其它选项皆不正确。
D. 空间复杂度上,快速排序的复杂度较低
正确答案:D
解析: D、空间复杂度上,归并排序的复杂度是O(N),快速排序是O(logN);时间复杂度上均是O(N logN)

3单选(2分)
设一组初始记录关键字序列(5,2,6,3,8),利用冒泡排序进行升序排序,则第一趟冒泡排序的结果为以下何者?
A. 2,3,5,6,8 
B. 2,5,6,3,8
C. 2,5,3,6,8
D. 2,3,6,5,8
正确答案:C
解析: C、第一趟冒泡后,2和5易位,3和6易位

4单选(2分)
设一组初始记录关键字序列(5,2,6,3,8),利用插入排序进行升序排序,则第二次插入排序的结果为以下何者?
A. 2,3,5,6,8
B. 2,5,3,6,8
C. 2,5,6,3,8
D. 5,2,3,6,8
正确答案:C
解析: C、第一次将2插入到5前面,序列变成2,5,6,3,8;第二次将6插入到5后面,序列还是2,5,6,3,8。

5单选(2分)
给定两个已分别排序好的列表mylst1, mylst2,两者的长度分别为m<n为已知,现要查找两表合并后的中位数,问最好的查找方式的时间复杂度?(可以理解为,alist=mylst1+mylst2,问查找alist的中位数的时间复杂度)
A. O(m logn)
B. O(m^2)
C. O(mn)
D. O(logm)
正确答案:D
解析: D、先取两者各自的中位数进行比较,并对mylst1进行二分查找,以mylst2对应的反向shift下标取得的值作为比较基准。

6多选(3分)
所谓排序算法的稳定性是指:排序前2个相等的数,其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。以下哪些排序算法是稳定的?
A. 冒泡排序
B. 快速排序
C. 归并排序
D. 插入排序
正确答案:A、C、D

7多选(3分)
现在有一个几乎顺序排列的,非常大的列表。问以下哪些算法有可能得到时间复杂度O(N)?
A. 归并排序
B. 选择排序
C. 插入排序
D. 冒泡排序
正确答案:A、C、D
解析: A、排序过程中可检测,如果前段序列的最大值小于等于后段序列最小值,则说明序列可以直接形成一段有序序列不需要再归并。 B、选择排序的比较次数有O(n^2) C、对于列表 mylst = [100000]+[i for i in range(100000)]+[i for i in range(100001, 200000)],若总是从已排序完成的列表末尾开始检查,那么前100000个插入各要两次比较,后面各要一次比较,比较次数与赋值操作次数均为O(n)。 D、对于列表 mylst = [100000]+[i for i in range(100000)]+[i for i in range(100001, 200000)],第二趟冒泡列表无变动,可判定冒泡排序完成。

8多选(3分)
以下哪些排序方式,其最坏情况的时间复杂度O(N^2)的?
A. 插入排序
B. 归并排序
C. 冒泡排序
D. 快速排序
正确答案:A、C、D
解析: B、最坏情况复杂度O(N logN)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值