#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) }}

  • 冒泡排序
  • 快速排序
  • 归并排序
  • 选择排序