林老师 · 客观题题库 · CSP-J 卷
CSP-J 卷
年年必考 · 各排序算法/稳定性/复杂度 · 共 35 题 · 由简到难 · 建议 53 分钟
真题
复刻
试卷编号OBJ-699742
题目总数35 题 · 70 分
试卷类型客观题
考生须知:
① 本卷为客观题单卷,合计 35 题 · 70 分,全部为客观题;
② 试卷右上角设有 「提交答卷」 与 「重置考试」 按钮,提交后系统自动判分并显示答题正确情况,请确认全部作答后再行提交;
③ 试卷不显示答案,提交后方可查看每题作答与正确答案的对照;
④ 答卷进度会保留在本地缓存中,刷新或再次打开仍可继续作答;
⑤ 本卷仅供学生练习使用;请勿用于其他用途;题面有问题请联系:i64coder@163.com。
壹
客 观 题
35 QUESTIONS · 2 POINTS EACH
第 1 题
单选
未作答
以下排序算法的常见实现中,哪个选项的说法是错误的:( )。
(2 分)
CSP-J 2022 · 单选 第12题 | 知识点 排序稳定性、选择排序
第 2 题
单选
未作答
某同学用冒泡排序对数组 {6,1,5,2,4} 进行升序排序,请问需要进行多少次元素交换?( )
(2 分)
CSP-J 2025 · 单选 第12题 | 知识点 模拟、排序稳定性
第 3 题
单选
未作答
冒泡排序算法的伪代码如下:
输入:数组 L,n≥1。输出:按非递减顺序排序的 L。
算法 BubbleSort:
1 FLAG ← n //标记被交换的最后元素位置
2 while FLAG > 1 do
3 k ← FLAG - 1
4 FLAG ← 1
5 for j = 1 to k do
6 if L(j) > L(j + 1) then do
7 L(j) ↔ L(j + 1)
8 FLAG ← j
对 n 个数用以上冒泡排序算法进行排序,最少需要比较多少次?( )
(2 分)
CSP-J 2020 · 单选 第5题 | 知识点 冒泡排序、排序复杂度
第 4 题
单选
未作答
排序算法是稳定的(Stable Sorting),就是指排序算法可以保证,在待排序数据中有两个相等记录的关键字 R 和 S(R 出现在 S 之前),在排序后的列表中 R 也一定在 S 前。下面关于排序稳定性的描述,正确的是( )。
(2 分)
GESP 四级 2023-06 · 单选 第2题 | 知识点 排序稳定性、排序复杂度
第 5 题
单选
未作答
对包含 n 个元素的数组进行冒泡排序,平均时间复杂度一般为( )。
(2 分)
GESP 四级 2023-09 · 单选 第3题 | 知识点 排序复杂度、冒泡排序
第 6 题
判断
未作答
对 N 个元素的数组执行插入排序算法,通常的时间复杂度是 O(N2)。
(2 分)
GESP 四级 2023-09 · 判断 第2题 | 知识点 排序复杂度、插入排序
第 7 题
判断
未作答
归并排序的时间复杂度是 O(NlogN)。
(2 分)
GESP 五级 2023-12 · 判断 第1题 | 知识点 归并排序、排序复杂度
第 8 题
单选
未作答
(2 分)
GESP 四级 2024-03 · 单选 第9题 | 知识点 排序复杂度、插入排序
第 9 题
判断
未作答
对 int a[] = {2,0,2,4,3,1,6},执行第一趟选择排序处理后 a 中数据变为 {0,2,2,4,3,1,6}。
(2 分)
GESP 四级 2024-03 · 判断 第1题 | 知识点 选择排序、排序稳定性
第 10 题
判断
未作答
如果待排序数据不能都装进内存,需要使用外排序算法。
(2 分)
GESP 四级 2024-03 · 判断 第2题 | 知识点 排序复杂度、排序稳定性
第 11 题
单选
未作答
(2 分)
GESP 四级 2024-06 · 单选 第7题 | 知识点 排序复杂度、插入排序
第 12 题
单选
未作答
下列程序横线处,应该输入的是( )。
01#include<iostream>
02using namespace std;
03int n,a[10001];
04void swap(int &a,int &b)
05{
06 int t=a;
07 a=b;
08 b=t;
09}
10int main()
11{
12 cin>>n;
13 for(int i=1;i<=n;i++)
14 cin>>a[i];
15 for(int i=n;i>1;i--)
16 for(int j=1;j<i;j++)
17 if(a[j]>a[j+1])
18 ____________;
19 for(int i=1;i<=n;i++)
20 cout<<a[i]<<" ";
21 cout<<endl;
22 return 0;
23}
(2 分)
GESP 四级 2024-06 · 单选 第8题 | 知识点 程序补全、冒泡排序
第 13 题
单选
未作答
(2 分)
GESP 四级 2024-06 · 单选 第10题 | 知识点 排序稳定性、排序复杂度
第 14 题
判断
未作答
插入排序算法中,平均时间复杂度是 O(n2),最坏的情况逆序情况下,达到最大时间复杂度。
(2 分)
GESP 四级 2024-06 · 判断 第10题 | 知识点 插入排序、排序复杂度
第 15 题
单选
未作答
(2 分)
GESP 四级 2024-09 · 单选 第10题 | 知识点 排序稳定性、排序复杂度
第 16 题
单选
未作答
下面代码实现了冒泡排序函数,则横线上应填写( )。
01//交换数组arr的第i个元素和第j个元素
02void swap(vector<int> &arr, int i, int j) {
03 int tmp = arr[i];
04 arr[i] = arr[j];
05 arr[j] = tmp;
06}
07
08int bubble_sort(vector<int> &arr) {
09 for (int i = arr.size() - 1; i > 0; i--) {
10 bool flag = false; // 标志位
11 ____________{ // 在此处填入代码
12 if(arr[j] > arr[j + 1]) {
13 swap(arr, i, j);
14 flag = true;
15 }
16 }
17 if(!flag)
18 break; // 此轮"冒泡"未交换任何元素
19 }
20}
21
(2 分)
GESP 四级 2024-09 · 单选 第11题 | 知识点 冒泡排序、程序补全、for循环
第 17 题
单选
未作答
(2 分)
GESP 四级 2024-09 · 单选 第12题 | 知识点 冒泡排序、排序复杂度
第 18 题
判断
未作答
(2 分)
GESP 四级 2024-09 · 判断 第6题 | 知识点 选择排序、排序稳定性
第 19 题
判断
未作答
(2 分)
GESP 四级 2024-09 · 判断 第7题 | 知识点 插入排序、排序复杂度
第 20 题
单选
未作答
下面关于排序算法(冒泡排序、插入排序和选择排序)的描述中,不正确的是( )。
(2 分)
GESP 四级 2024-12 · 单选 第10题 | 知识点 排序复杂度、冒泡排序、插入排序
第 21 题
单选
未作答
冒泡排序的第一轮操作是从左到右遍历数组,通过两两比较相邻元素,将当前最大的元素移动到末尾。给定数组 arr[]={4, 1, 3, 1, 5, 2},执行第一轮冒泡排序后数组 arr 中的内容为( )。
(2 分)
GESP 四级 2024-12 · 单选 第11题 | 知识点 冒泡排序、模拟
第 22 题
单选
未作答
下面代码实现了插入排序函数,则横线上应填写( )。
01void insertion_sort(vector<int> &nums) {
02 for (int i = 1; i < nums.size(); i++) {
03 ____________ { // 在此处填入代码
04 while (j >= 0 && nums[j] > base)
05 nums[j + 1] = nums[j];
06 j--;
07 }
08 nums[j + 1] = base;
09 }
10}
(2 分)
GESP 四级 2024-12 · 单选 第13题 | 知识点 插入排序、程序补全
第 23 题
判断
未作答
冒泡排序的平均时间复杂度为 O(n2),但最优情况下为 O(n)。
(2 分)
GESP 四级 2024-12 · 判断 第7题 | 知识点 冒泡排序、排序复杂度
第 24 题
判断
未作答
(2 分)
GESP 四级 2024-12 · 判断 第8题 | 知识点 冒泡排序、插入排序、排序稳定性
第 25 题
单选
未作答
(2 分)
GESP 四级 2025-03 · 单选 第12题 | 知识点 排序稳定性、选择排序
第 26 题
单选
未作答
对数组 arr[]={5, 3, 8, 1} 进行升序排序,执行第一轮冒泡排序后数组 arr 中的内容为( )。
(2 分)
GESP 四级 2025-03 · 单选 第13题 | 知识点 冒泡排序、模拟
第 27 题
判断
未作答
插入排序在最好情况(已有序)下的时间复杂度是 O(n2)。
(2 分)
GESP 四级 2025-03 · 判断 第8题 | 知识点 插入排序、排序复杂度
第 28 题
单选
未作答
(2 分)
GESP 四级 2025-06 · 单选 第9题 | 知识点 插入排序、排序复杂度
第 29 题
判断
未作答
无论初始数组是否有序,选择排序都执行 O(n2) 次比较。
(2 分)
GESP 四级 2025-06 · 判断 第7题 | 知识点 选择排序、排序复杂度
第 30 题
单选
未作答
(2 分)
GESP 四级 2025-09 · 单选 第9题 | 知识点 排序稳定性、选择排序
第 31 题
单选
未作答
下面代码试图实现选择排序,使其能对数组 nums 排序为升序,则横线上应分别填写( )。
01void selectionSort(vector<int>& nums) {
02 int n = nums.size();
03 for (int i = 0; i < n - 1; ++i) {
04 int minIndex = i;
05 for (int j = i + 1; j < n; ++j) {
06 if ( ____________ ) { // 在此处填入代码
07 minIndex = j;
08 }
09 }
10 ____________; // 在此处填入代码
11 }
12}
(2 分)
GESP 四级 2025-09 · 单选 第10题 | 知识点 选择排序、程序补全
第 32 题
单选
未作答
关于插入排序的时间复杂度,下列说法正确的是( )。
(2 分)
GESP 四级 2025-09 · 单选 第12题 | 知识点 插入排序、排序复杂度
第 33 题
判断
未作答
虽然插入排序的时间复杂度为 O(n2),但由于单元操作相对较少,因此在小数据量的排序任务中非常受欢迎。
(2 分)
GESP 四级 2025-09 · 判断 第7题 | 知识点 插入排序、排序复杂度
第 34 题
单选
未作答
对如下 4 个扑克牌进行排序,
01struct Card {
02 int value;
03 char suit; // 花色
04};
05
06Card cards[4] = {{5,'A'}, {3,'B'}, {5,'C'}, {3,'D'}};
使用某排序算法按 value 排序后,结果为:{3,'D'},{3,'B'},{5,'A'},{5,'C'},则这个排序算法是稳定的吗?
(2 分)
GESP 四级 2025-12 · 单选 第10题 | 知识点 排序稳定性、排序复杂度
第 35 题
单选
未作答
小杨在对“能量晶石”按亮度进行排序。如果两块晶石亮度相同,他希望保持它们在原始序列中的相对顺序。下列关于排序算法稳定性的说法,错误的是( )。
(2 分)
GESP 四级 2026-06 · 单选 第11题 | 知识点 排序稳定性、选择排序