#mengxiongP2. 排序算法-阅读程序(归并排序)
排序算法-阅读程序(归并排序)
排序算法 - 阅读程序(归并排序)
题目描述
阅读以下程序,回答判断题(第 1-4 题,每题 15 分)和选择题(第 5-6 题,第 5 题 15 分,第 6 题 25 分)。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 500000, INF = 0x3f3f3f3f;
int L[maxn / 2 + 2], R[maxn / 2 + 2];
void unknown(int a[], int n, int left, int mid, int right) {
int n1 = mid - left, n2 = right - mid;
for(int i = 0; i < n1; i++)
L[i] = a[left + i];
for(int i = 0; i < n2; i++)
R[i] = a[mid + i];
L[n1] = R[n2] = INF;
int i = 0, j = 0;
for(int k = left; k < right; k++) {
if(L[i] <= R[j])
a[k] = L[i++];
else
a[k] = R[j++];
}
}
void unknownsort(int a[], int n, int left, int right) {
if(left + 1 < right) {
int mid = (left + right) / 2;
unknownsort(a, n, left, mid);
unknownsort(a, n, mid, right);
unknown(a, n, left, mid, right);
}
}
int main() {
int a[maxn], n;
cin >> n;
for(int i = 0; i < n; i++) cin >> a[i];
unknownsort(a, n, 0, n);
for(int i = 0; i < n; i++) {
if(i) cout << " ";
cout << a[i];
}
cout << endl;
return 0;
}
判断题
第 1 题 将第 13 行的 "<" 改为 "<=" 不会改变运行结果。{{ select(1) }}
- 正确
- 错误
第 2 题 将第 21 行的 "<" 改为 "<=" 不会改变运行结果。{{ select(2) }}
- 正确
- 错误
第 3 题 此类排序方法是高效的,但是不稳定。{{ select(3) }}
- 正确
- 错误
第 4 题 将第 4 行的 2 个 "+2" 都去掉不会改变运行结果。{{ select(4) }}
- 正确
- 错误
选择题
第 5 题 此题是哪种排序?{{ select(5) }}
- A. 选择排序
- B. 桶排序
- C. 归并排序
- D. 堆排序
第 6 题(25 分) 此题用到了( )思想。{{ select(6) }}
- A. 动态规划
- B. 分治
- C. 冒泡
- D. 贪心