#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. 贪心