#JC1051. 归并排序
归并排序
一、单项选择题(每题2分,共20分)
1、归并排序的核心流程是?() {{ select(1) }}
- 选基准值划分区间,递归处理子区间
- 先均等拆分,再合并有序子序列
- 相邻元素两两交换完成排序
- 每次选出最小元素放到前面
2、归并排序依靠下面哪一种编程思想实现?() {{ select(2) }}
- 递归
- 贪心
- 枚举
- 二分答案
3、归并排序拆分序列时,mid的计算方式为?() {{ select(3) }}
mid = L + Rmid = (L + R) / 2mid = R-Lmid = L*2
4、归并排序合并过程需要什么数组来临时存放数据?() {{ select(4) }}
- 标记数组vis
- 临时数组b
- 栈stack
- 队列queue
5、归并排序合并升序序列时,first指向左区间,second指向右区间,当a[first]<=a[second],应该如何处理?()
{{ select(5) }}
- 将
a[first]放入临时数组,first++ - 将
a[second]放入临时数组,second++ - 直接退出合并循环
- 交换a[first]与a[second]
6、归并排序属于稳定性排序,稳定排序的含义是?() {{ select(6) }}
- 排序速度永远最快
- 相等元素排序后保持原来的相对先后顺序
- 不会使用额外数组
- 只能处理升序不能处理降序
7、关于快速排序与归并排序对比,说法正确的是?() {{ select(7) }}
- 有序序列会造成快排效率变差,归并排序不受该影响
- 归并排序必须选基准值划分
- 快排需要临时数组,归并排序不需要
- 归并排序是不稳定排序
8、利用归并排序统计逆序对,发生逆序时,增加的逆序对数量是?() {{ select(8) }}
mid‑first+1second‑midR‑L+1first+mid
9、录取分数线题目,已经降序排好成绩数组a,m为计划录取人数,循环条件while(a[m‑1]==a[m])的作用是?()
{{ select(9) }}
- 把全部相同分数全部录取
- 避免录取人数超过m,向前移动m
- 将数组升序重排
- 统计总学生数量
10、兔子排行榜题目,分数相同要保留输入原来顺序,选择归并排序的原因是?() {{ select(10) }}
- 归并排序速度一定比所有排序都快
- 归并是稳定排序,相等元素相对顺序不变
- 不需要递归就可以完成排序
- 不需要额外临时数组
二、判断题(每题2分,共10分)
11、归并排序拆分的时候,尽量把序列拆分为大致均等的两部分。() {{ select(11) }}
- 正确
- 错误
12、归并排序合并完成后,不需要把临时数组的数据复制回原数组。() {{ select(12) }}
- 正确
- 错误
13、归并排序可以在合并的过程中统计逆序对的总个数。() {{ select(13) }}
- 正确
- 错误
14、归并排序递归时,必须等到子区间长度等于2才可以开始合并。() {{ select(14) }}
- 正确
- 错误
15、归并排序既可以实现升序,修改比较条件也可以实现降序排序。() {{ select(15) }}
- 正确
- 错误