林老师 · 客观题题库 · CSP-J 卷

CSP-J 卷

年年必考 · 各排序算法/稳定性/复杂度 · 共 35 题 · 由简到难 · 建议 53 分钟
真题
复刻
试卷编号OBJ-699742
题目总数35 题 · 70 分
试卷类型客观题
考生须知:
① 本卷为客观题单卷,合计 35 题 · 70 分,全部为客观题;
② 试卷右上角设有 「提交答卷」「重置考试」 按钮,提交后系统自动判分并显示答题正确情况,请确认全部作答后再行提交;
③ 试卷不显示答案,提交后方可查看每题作答与正确答案的对照;
④ 答卷进度会保留在本地缓存中,刷新或再次打开仍可继续作答;
⑤ 本卷仅供学生练习使用;请勿用于其他用途;题面有问题请联系:i64coder@163.com。

判 分 报 告

0 / 70 分
0
答 对 · 得 0
0
答 错 · 失 0
当前筛选下没有题目

客 观 题

35 QUESTIONS · 2 POINTS EACH
第 1 题 单选 未作答

以下排序算法的常见实现中,哪个选项的说法是错误的:( )。

(2 分)
CSP-J 2022 · 单选 第12题 | 知识点 排序稳定性、选择排序
第 2 题 单选 未作答

某同学用冒泡排序对数组 {6,1,5,2,46, 1, 5, 2, 4} 进行升序排序,请问需要进行多少次元素交换?( )

(2 分)
CSP-J 2025 · 单选 第12题 | 知识点 模拟、排序稳定性
第 3 题 单选 未作答

冒泡排序算法的伪代码如下:

输入:数组 LLn1n\ge 1。输出:按非递减顺序排序的 LL

算法 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

nn 个数用以上冒泡排序算法进行排序,最少需要比较多少次?( )

(2 分)
CSP-J 2020 · 单选 第5题 | 知识点 冒泡排序、排序复杂度
第 4 题 单选 未作答

排序算法是稳定的(Stable Sorting),就是指排序算法可以保证,在待排序数据中有两个相等记录的关键字 RSR 出现在 S 之前),在排序后的列表中 R 也一定在 S 前。下面关于排序稳定性的描述,正确的是( )。

(2 分)
GESP 四级 2023-06 · 单选 第2题 | 知识点 排序稳定性、排序复杂度
第 5 题 单选 未作答

对包含 n 个元素的数组进行冒泡排序,平均时间复杂度一般为( )。

(2 分)
GESP 四级 2023-09 · 单选 第3题 | 知识点 排序复杂度、冒泡排序
第 6 题 判断 未作答

N 个元素的数组执行插入排序算法,通常的时间复杂度是 O(N2)O(N^2)

(2 分)
GESP 四级 2023-09 · 判断 第2题 | 知识点 排序复杂度、插入排序
第 7 题 判断 未作答

归并排序的时间复杂度是 O(NlogN)O(N \log N)

(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)O(n^2),最坏的情况逆序情况下,达到最大时间复杂度。

(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),但最优情况下为 O(n)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)O(n^2)

(2 分)
GESP 四级 2025-03 · 判断 第8题 | 知识点 插入排序、排序复杂度
第 28 题 单选 未作答

以下哪种情况是使用插入排序的合适场景?

(2 分)
GESP 四级 2025-06 · 单选 第9题 | 知识点 插入排序、排序复杂度
第 29 题 判断 未作答

无论初始数组是否有序,选择排序都执行 O(n2)O(n^2) 次比较。

(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)O(n^2),但由于单元操作相对较少,因此在小数据量的排序任务中非常受欢迎。

(2 分)
GESP 四级 2025-09 · 判断 第7题 | 知识点 插入排序、排序复杂度
第 34 题 单选 未作答

对如下 44 个扑克牌进行排序,

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题 | 知识点 排序稳定性、选择排序