#GESP260605T2. 【GESP26年6月五级】判断题(每题 2 分,共 20 分)

第 16 题 数组的存储空间在物理上通常是连续的,而链表的结点可以存储在不连续的内存空间中。( )

{{ select(16) }}

  • 对
  • 错

第 17 题 带哨兵头尾节点的双向循环链表,在表头插入节点 p ,以下四步操作无论什么顺序执行结果都正确。( )

① p->next = head->next;
② p->prev = head;
③ head->next->prev = p;
④ head->next = p;

{{ select(17) }}

  • 对
  • 错

第 18 题 对任意正整数 a 、 b ,以下两种写法的 gcd 函数返回值完全相同。( )

int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a % b);
}

int gcd2(int a, int b) {
    while (b) {
        int t = a % b;
        a = b;
        b = t;
    }
    return a;
}

{{ select(18) }}

  • 对
  • 错

第 19 题 在归并排序的合并阶段中,如下代码可以正确地将两个已排序的子数组 L 和 R 合并到数组 arr。( )

void mergeArray(int arr[], int low, int mid, int right) {
    int n1 = mid - low + 1;
    int n2 = right - mid;

    int L[n1], R[n2];

    for (int i = 0; i < n1; i++) L[i] = arr[low + i];
    for (int j = 0; j < n2; j++) R[j] = arr[mid + 1 + j];

    int i = 0, j = 0, k = low;
    while (i < n1 && j < n2) {
        if (L[i] <= R[j])
            arr[k++] = L[i++];
        else
            arr[k++] = R[j++];
    }
    while (i < n1) arr[k++] = L[i++];
    while (j < n2) arr[k++] = R[j++];
}

{{ select(19) }}

  • 对
  • 错

第 20 题 分治法通常将一个规模较大的问题拆分为若干个规模较小、结构相似的子问题,这些子问题可以相互独立地求解。( )

{{ select(20) }}

  • 对
  • 错

第 21 题 快速排序是一种稳定的排序算法,即对于值相等的元素,排序后它们的相对顺序与排序前一定相同。( )

{{ select(21) }}

  • 对
  • 错

第 22 题 以下两段代码的运行结果完全相同。( )

void fill1(int n) {
    for (int k = 1; k <= n; k *= 2)
        cout << k << " ";
}

void fill2(int n) {
    int k = 1;
    while (k < n) {
        cout << k << " ";
        k *= 2;
    }
}

{{ select(22) }}

  • 对
  • 错

第 23 题 一个大于1的自然数都可以唯一地分解为若干个不同质数的乘积,且每个质因数只出现一次。( )

{{ select(23) }}

  • 对
  • 错

第 24 题 线性筛法的时间复杂度为 O(n),每个合数只被其最小质因数筛除一次。( )

{{ select(24) }}

  • 对
  • 错

第 25 题 归并排序是一种原地排序算法,不需要额外的存储空间。( )

{{ select(25) }}

  • 对
  • 错
Problem Info

#GESP260605T2. 【GESP26年6月五级】判断题(每题 2 分,共 20 分)

ID 10292
类型 客观题
尝试 0 已通过 0
难度 (无)
上传者
标签
GESP五级