#P1357. Day4 排序代码判读(8题)
Day4 排序代码判读(8题)
第 1 题
写出以下程序运行后的输出结果,数字之间用一个空格分隔:
int a[5] = {5, 1, 4, 2, 3};
for (int j = 0; j < 4; j++)
if (a[j] > a[j + 1])
swap(a[j], a[j + 1]);
for (int x : a) cout << x << ' ';
{{ input(1) }}
第 2 题
写出以下程序执行一轮后的数组,数字之间用一个空格分隔:
int a[5] = {4, 2, 5, 1, 3};
int k = 0;
for (int j = 1; j < 5; j++)
if (a[j] < a[k]) k = j;
swap(a[0], a[k]);
for (int x : a) cout << x << ' ';
{{ input(2) }}
第 3 题
写出以下程序运行后的数组,数字之间用一个空格分隔:
int a[5] = {2, 4, 6, 3, 8};
int x = a[3], j = 2;
while (j >= 0 && a[j] > x) {
a[j + 1] = a[j];
j--;
}
a[j + 1] = x;
for (int v : a) cout << v << ' ';
{{ input(3) }}
第 4 题
反复比较并交换相邻元素,是哪种排序的典型特征?
{{ select(4) }}
- 冒泡排序
- 选择排序
- 插入排序
- 归并排序
第 5 题
每轮记录未排序区间的最小值下标,通常是哪种排序?
{{ select(5) }}
- 冒泡排序
- 选择排序
- 快速排序
- 归并排序
第 6 题
保存当前元素、将有序前缀中的较大元素后移,通常是哪种排序?
{{ select(6) }}
- 冒泡排序
- 选择排序
- 插入排序
- 快速排序
第 7 题
使用 pivot 将元素划分到两侧,通常是哪种排序?
{{ select(7) }}
- 插入排序
- 快速排序
- 归并排序
- 选择排序
第 8 题
递归拆半并合并两个有序序列,通常是哪种排序?
{{ select(8) }}
- 冒泡排序
- 快速排序
- 归并排序
- 选择排序