测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A22008. 下⾯代码实现了归并排序。下述关于归并排序的说法中,不正确的是( )。void merge(vector<int>& arr, vector<int>& temp, int l, int mid, int r) { int i = l, j = mid + 1, k = l; while (i <= mid && j <= r) { if (arr[i] <= arr[j]) temp[k++] …

单选题 困难

题目描述

下⾯代码实现了归并排序。下述关于归并排序的说法中,不正确的是(    )。

void merge(vector<int>& arr, vector<int>& temp, int l, int mid, int r) {
    int i = l, j = mid + 1, k = l;
    while (i <= mid && j <= r) {
        if (arr[i] <= arr[j]) temp[k++] = arr[i++];
        else temp[k++] = arr[j++];
       
    }
    while (i <= mid) temp[k++] = arr[i++];
    while (j <= r)  temp[k++] = arr[j++];
    for (int p = l; p <= r; ++p) arr[p] = temp[p];
   
}
void mergeSort(vector<int>& arr, vector<int>& temp, int l, int r) {
    if (l >= r) return;
    int mid = l + (r - l) / 2;
    mergeSort(arr, temp, l, mid);
    mergeSort(arr, temp, mid + 1, r);
    merge(arr, temp, l, mid, r);
}

选项(单选)

上一题 下一题