#3492. E4jxhm4

E4jxhm4

一、单选题(40分,每题10分)

  1. 有以下C++代码:
int a[5] = {10, 20, 30, 40, 50};
int *p = a + 2;
cout << *(p - 1) << endl;

输出结果是( )。 {{ select(1) }}

  • 10
  • 20
  • 30
  • 40
  1. 已知递推公式:f(1)=1, f(2)=1, f(n)=f(n-1)+f(n-2) (n≥3)。则 f(6) 的值为( )。 {{ select(2) }}
  • 5
  • 8
  • 13
  • 21
  1. 以下代码的时间复杂度是( )。
for (int i = 1; i <= n; i *= 2)
    for (int j = 1; j <= n; j++)
        cout << i + j << endl;

{{ select(3) }}

  • O(n)
  • O(n log n)
  • O(n²)
  • O(log n)
  1. 下列关于选择排序的描述,正确的是( )。 {{ select(4) }}
  • 选择排序是稳定排序
  • 选择排序每轮将最小元素放到已排序部分的末尾
  • 选择排序的最好时间复杂度是O(n)
  • 选择排序每轮比较次数与冒泡排序一样多

二、多选题(30分,每题10分)

  1. 关于冒泡排序、选择排序、插入排序,下列说法正确的有( )。 {{ multiselect(5) }}
  • 冒泡排序在最好情况(数组已有序)下时间复杂度为O(n)
  • 选择排序是稳定的排序算法
  • 插入排序在数组基本有序时效率较高
  • 三种排序算法的平均时间复杂度都是O(n²)
  1. 关于指针,下列说法正确的有( )。 {{ multiselect(6) }}
  • 指针变量存储的是内存地址
  • 对指针执行自增操作,指针会向后移动其指向类型大小的字节数
  • 空指针不能进行解引用操作
  • 两个指针可以相加得到一个新指针
  1. 关于递推算法和时间复杂度,下列说法正确的有( )。 {{ multiselect(7) }}
  • 递推算法通常比递归算法节省栈空间
  • 递推公式必须有初始条件才能求解
  • 一个算法的时间复杂度越低,实际运行一定越快
  • 计算斐波那契数列的递推算法时间复杂度为O(n)

三、判断题(30分,每题10分)

  1. 定义 int *p = nullptr; 后,执行 *p = 10; 会导致运行时错误或未定义行为。( ) {{ select(8) }}
  • 正确
  • 错误
  1. 冒泡排序在每一轮比较中,如果没有发生任何交换,可以提前结束排序,说明数组已经有序。( ) {{ select(9) }}
  • 正确
  • 错误
  1. 选择排序是一种稳定的排序算法。( ) {{ select(10) }}
  • 正确
  • 错误