找到 375 道单选题
EXY-SC-0190
第 186 题

下述 C++ 代码实现了快速排序算法,最坏情况的时间复杂度是( )。

int partition(vector<int>& arr, int low, int high) {
    int i = low, j = high;
    int pivot = arr[low];                    // 以首元素为基准
    while (i < j) {
        while (i < j && arr[j] >= pivot) j--;
        while (i < j && arr[i] <= pivot) i++;
        if (i < j) swap(arr[i], arr[j]);
    }
    swap(arr[i], arr[low]);
    return i;
}
 
void quickSort(vector<int>& arr, int low, int high) {
    if (low >= high) return;
    int p = partition(arr, low, high);
    quickSort(arr, low, p - 1);
    quickSort(arr, p + 1, high);
}
A

$O(n)$。

B

$O(logn)$

C

$O(n^2)$

D

$O(nlogn)$

语言: C++
GESP真题 五级
2025.12
单选题号: 10
EXY-SC-0189
第 187 题

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

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);
}
A

归并排序的平均复杂度是$O(nlogn)$。

B

归并排序需要$O(n)$的额外空间。

C

归并排序在最坏情况的时间复杂度是$O(n^2)$。

D

归并排序适合大规模数据。

语言: C++
GESP真题 五级
2025.12
单选题号: 9
EXY-SC-0188
第 188 题

下列关于排序的说法,正确的是( )。

A

快速排序是稳定排序

B

归并排序通常是稳定的

C

插入排序是不稳定排序

D

冒泡排序不是原地排序

语言: C++
GESP真题 五级
2025.12
单选题号: 8
EXY-SC-0187
第 189 题

下述代码实现素数表的线性筛法,筛选出所有小于等于 n 的素数,则横线上应填的代码是( )。

vector<int> linear_sieve(int n) {
    vector<bool> is_prime(n + 1, true);
    vector<int> primes;
 
    is_prime[0] = is_prime[1] = 0; // 0和1两个数特殊处理
    for (int i = 2; i <= n; ++i) {
        if (is_prime[i]) {
            primes.push_back(i);
        }
        ------------------------ {  // 在此处填入代码
            is_prime[ i * primes[j] ] = 0;
            if (i % primes[j] == 0)
                break;
        }
    }

    return primes;
}
A

for (int j = 0; j < primes.size() && i * primes[j] <= n; j++)

B

for(int j = sqrt(n); j <= n && i * primes[j] <= n; j++)

C

for (int j = 1; j <= sqrt(n); j++)

D

for(int j = 1; j < n && i * primes[j] <= n; j++)

语言: C++
GESP真题 五级
2025.12
单选题号: 7
EXY-SC-0186
第 190 题

唯一分解定理描述的内容是( )。

A

任何正整数都可以表示为两个素数的和。

B

任何大于 1 的合数都可以唯一分解为有限个质数的乘积。

C

两个正整数的最大公约数总是等于它们的最小公倍数除以它们的乘积。

D

所有素数都是奇数。

语言: C++
GESP真题 五级
2025.12
单选题号: 6
当前页显示 186 - 190 ,共 375 道单选题