#JC1050. 快速排序
快速排序
一、单项选择题(每题2分,共20分)
1、快速排序的核心思想是?() {{ select(1) }}
- 相邻两两比较交换元素
- 选定基准值,小于基准放左侧,大于基准放右侧,递归处理子区间
- 每次从未排序区选出最小元素放到前面
- 将元素插入到前面有序序列的合适位置
2、快速排序实现依靠什么编程思想?() {{ select(2) }}
- 贪心
- 枚举
- 递归
- 二分答案
3、快速排序自定义函数中,递归出口条件是?() {{ select(3) }}
if(left >= right) return;if(left == 0) return;if(right == 0) return;if(left+right>0) return;
4、升序快速排序,j指针移动规则描述正确的是?() {{ select(4) }}
- j从左向右,遇到比基准大就停止
- j从右向左,
a[j]>=x就继续左移,遇到小于基准值停止 - j固定不动,只移动i指针
- j遇到任何元素都直接移动到最左端
5、在一次划分完成后,基准值会放在什么位置?() {{ select(5) }}
- 数组最开头
- 数组最末尾
- i与j重合的下标位置
- left下标处
6、快速排序属于哪一类排序(稳定性)?() {{ select(6) }}
- 稳定排序
- 不稳定排序
- 一定完全稳定
- 只有整数才稳定
7、想要把快速排序由升序改成降序,需要修改哪里的判断条件?() {{ select(7) }}
- 只修改递归出口
- 修改while循环里面a[j]、a[i]和基准x的比较条件
- 修改数组定义类型
- 修改函数返回值类型
8、有序列4 9 5 6,基准值选4做升序一次划分,划分结束后基准值4的位置为?()
{{ select(8) }}
- 数组下标最左边
- 数组下标最右边
- 第二个下标
- 中间下标
9、下面哪个不属于稳定排序算法?() {{ select(9) }}
- 冒泡排序
- 插入排序
- 快速排序
- 桶排序
10、“结果最大”拼接数字题,快速排序比较两个数字采用什么方式比较大小?() {{ select(10) }}
- 直接比较数字数值大小
- 将数字转为字符串,比较拼接之后的字符串大小
- 直接比较数字位数
- 数字大的一定排在前面
二、判断题(每题2分,共10分)
11、快速排序一次划分结束后,基准元素已经处于它最终的正确有序位置。() {{ select(11) }}
- 正确
- 错误
12、快速排序递归调用,划分完成后需要递归处理qsort(left,i‑1)处理左区间,qsort(i+1,right)处理右区间。()
{{ select(12) }}
- 正确
- 错误
13、稳定排序的含义:排序之后原来相等元素的相对先后顺序保持不变。() {{ select(13) }}
- 正确
- 错误
14、快速排序中,i、j指针没有重合的时候,就可以把基准值直接存入数组。() {{ select(14) }}
- 正确
- 错误
15、降序快排,大于基准值的元素放到左边,小于基准值的放到右边。() {{ select(15) }}
- 正确
- 错误