林老师 · 客观题题库 · 专题 S03 复杂度分析 · 复习强化

专题 S03 复杂度分析 · 复习强化

100 题 · 每题对应一个知识细节 · 全部原创
真题
复刻
试卷编号ORIG-专题S03复杂度分析-复习强化
题目总数103 题 · 100 分
试卷类型客观题
考生须知:
① 本卷共 10 大部分,合计 103 题 · 100 分,全部为客观题;
② 试卷右上角设有 「提交答卷」「重置考试」 按钮,提交后系统自动判分并显示答题正确情况,请确认全部作答后再行提交;
③ 试卷不显示答案,提交后方可查看每题作答与正确答案的对照;
④ 答卷进度会保留在本地缓存中,刷新或再次打开仍可继续作答;
⑤ 本卷仅供学生练习使用;请勿用于其他用途;题面有问题请联系:i64coder@163.com。

判 分 报 告

0 / 100 分
0
答 对 · 得 0
0
答 错 · 失 0
当前筛选下没有题目

Big O 与渐近记号

12 QUESTIONS · 2 POINTS EACH
第 1 题 A1 未作答

f(n)=O(g(n))f(n) = O(g(n)) 的含义是( )。

(1 分)
第 2 题 A2 未作答

"O(n²) 的算法"意味着( )。

(1 分)
第 3 题 A3 未作答

Ω(g(n))\Omega(g(n))Θ(g(n))\Theta(g(n)) 分别表示( )。

(1 分)
第 4 题 A4 未作答

按增长速度从慢到快排列,正确的是( )。

(1 分)
第 5 题 A5 未作答

nn 足够大时,O(nlogn)O(n \log n)O(n2)O(n^2) 的关系是( )。

(1 分)
第 6 题 A6 未作答

O(2n)O(2n)O(n/2)O(n/2)O(100n)O(100n) 统一写成( )。

(1 分)
第 7 题 A7 未作答

f(n)=3n2+5n+7f(n) = 3n^2 + 5n + 7 的渐近复杂度是( )。

(1 分)
第 8 题 A8 未作答

两段代码分别 O(n)O(n)O(n2)O(n^2)顺序执行的整体复杂度是( )。

(1 分)
第 9 题 A9 未作答

外层循环 O(n)O(n) 内嵌循环 O(logn)O(\log n)(嵌套),整体复杂度是( )。

(1 分)
第 10 题 A10 未作答

O(1)O(1) 表示( )。

(1 分)
第 11 题 A11 未作答

O(log2n)O(\log_2 n)O(log10n)O(\log_{10} n) 的关系是( )。

(1 分)
第 12 题 A12 未作答

复杂度分析中的 nn 指的是( )。

(1 分)

循环与代码段分析

14 QUESTIONS · 2 POINTS EACH
第 13 题 B1 未作答

01for (int i = 0; i < n; ++i)
02    sum += a[i];

时间复杂度是( )。

(1 分)
第 14 题 B2 未作答

01for (int i = 0; i < n; ++i)
02    for (int j = 0; j < n; ++j)
03        cnt++;

时间复杂度是( )。

(1 分)
第 15 题 B3 未作答

三层独立嵌套循环,每层 nn 次,时间复杂度是( )。

(1 分)
第 16 题 B4 未作答

01for (int j = 1; j < n; j *= 2)
02    k++;

循环执行次数约为( ),时间复杂度是( )。

(1 分)
第 17 题 B5 未作答

01for (int j = n; j > 0; j /= 2)
02    k++;

时间复杂度是( )。

(1 分)
第 18 题 B6 未作答

01for (int i = 1; i * i < n; ++i)
02    k++;

时间复杂度是( )。

(1 分)
第 19 题 B7 未作答

01for (int i = 0; i < n; ++i)
02    for (int j = 1; j < n; j *= 2)
03        k++;

时间复杂度是( )。(2022 年 S 组真题考法)

(1 分)
第 20 题 B8 未作答

01int i = 0, j = n - 1;
02while (i < j) { i++; j--; }

时间复杂度是( )。

(1 分)
第 21 题 B9 未作答

01for (int i = 0; i < n; ++i)
02    for (int j = 0; j < i; ++j)
03        cnt++;

时间复杂度是( )。

(1 分)
第 22 题 B10 未作答

01int i, j, k = 0;
02for (i = 0; i < n; i++) {
03    for (j = 0; j < n; j *= 2) {
04        k = k + n / 2;
05    }
06}

时间复杂度是( )。(2022 年 CSP-S 单选真题)

(1 分)
第 23 题 B11 未作答

01while (n > 1) { n = n / 3; }

时间复杂度是( )。

(1 分)
第 24 题 B12 未作答

01for (int i = 0; i < n; ++i) a[i]++;
02for (int i = 0; i < n * n; ++i) b[i]++;

整体时间复杂度是( )。

(1 分)
第 25 题 B13 未作答

01int a = 1, b = 2;
02swap(a, b);
03cout << a << b;

时间复杂度是( )。

(1 分)
第 26 题 B14 未作答

关于循环复杂度,错误的说法是( )。

(1 分)

递归复杂度

12 QUESTIONS · 2 POINTS EACH
第 27 题 C1 未作答

分析递归复杂度的"递归树"方法的核心思想是( )。

(1 分)
第 28 题 C2 未作答

01int f(int n) {
02    if (n <= 1) return 1;
03    return f(n - 1) + 1;
04}

时间复杂度是( )。

(1 分)
第 29 题 C3 未作答

01int f(int n) {
02    if (n <= 1) return 1;
03    return f(n / 2) + 1;
04}

时间复杂度是( )。

(1 分)
第 30 题 C4 未作答

01int fib(int n) {
02    if (n <= 1) return n;
03    return fib(n-1) + fib(n-2);
04}

时间复杂度约是( )。

(1 分)
第 31 题 C5 未作答

主定理(Master Theorem)处理形如 T(n)=aT(n/b)+O(nd)T(n) = aT(n/b) + O(n^d) 的递归式,其中 aabbdd 的含义分别是( )。

(1 分)
第 32 题 C6 未作答

T(n)=2T(n/2)+O(n)T(n) = 2T(n/2) + O(n) 的解是( )。

(1 分)
第 33 题 C7 未作答

T(n)=2T(n/2)+O(1)T(n) = 2T(n/2) + O(1) 的解是( )。

(1 分)
第 34 题 C8 未作答

T(n)=T(n/2)+O(1)T(n) = T(n/2) + O(1) 的解是( )。

(1 分)
第 35 题 C9 未作答

递归深度为 dd 的递归函数,栈空间复杂度是( )(每帧 O(1)O(1) 局部变量)。

(1 分)
第 36 题 C10 未作答

朴素斐波那契递归 fib(40) 在普通电脑上( )。

(1 分)
第 37 题 C11 未作答

归并排序的递归式与主定理求解结果是( )。

(1 分)
第 38 题 C12 未作答

关于递归复杂度,错误的说法是( )。

(1 分)

排序复杂度回顾

8 QUESTIONS · 2 POINTS EACH
第 39 题 D1 未作答

冒泡排序的平均与最坏时间复杂度是( )。

(1 分)
第 40 题 D2 未作答

插入排序的最好与最坏时间复杂度是( )。

(1 分)
第 41 题 D3 未作答

归并排序的最好、平均、最坏时间复杂度是( )。

(1 分)
第 42 题 D4 未作答

快速排序的最坏时间复杂度是( )。

(1 分)
第 43 题 D5 未作答

堆排序的最好、平均、最坏时间复杂度是( )。

(1 分)
第 44 题 D6 未作答

计数排序的时间复杂度是( )(nn 个元素、值域 VV)。

(1 分)
第 45 题 D7 未作答

基于比较的排序算法,最坏情况的比较次数下界是( )。

(1 分)
第 46 题 D8 未作答

以下排序算法中,最坏情况仍保持 O(nlogn)O(n \log n) 的是( )。

(1 分)

空间复杂度

10 QUESTIONS · 2 POINTS EACH
第 47 题 E1 未作答

算法的空间复杂度指的是( )。

(1 分)
第 48 题 E2 未作答

int a[10000]; 的空间复杂度是( )。

(1 分)
第 49 题 E3 未作答

int g[n][n];nn 是运行时输入)的空间复杂度是( )。

(1 分)
第 50 题 E4 未作答

递归深度为 nn 的函数(每帧 O(1)O(1) 变量),空间复杂度是( )。

(1 分)
第 51 题 E5 未作答

冒泡排序、插入排序、快速排序的共同空间特征是( )。

(1 分)
第 52 题 E6 未作答

归并排序的空间复杂度是( )。

(1 分)
第 53 题 E7 未作答

vector<int> v; 依次 push_back nn 个元素,最坏情况下 vector 的空间复杂度是( )。

(1 分)
第 54 题 E8 未作答

"空间换时间"的典型例子是( )。

(1 分)
第 55 题 E9 未作答

n=105n = 10^5 时,O(n2)O(n^2)int 二维数组约需( )。

(1 分)
第 56 题 E10 未作答

关于空间复杂度,错误的是( )。

(1 分)

记忆化搜索

10 QUESTIONS · 2 POINTS EACH
第 57 题 F1 未作答

记忆化搜索的核心思想是( )。

(1 分)
第 58 题 F2 未作答

记忆化搜索最适合的场景是( )。

(1 分)
第 59 题 F3 未作答

朴素斐波那契递归是 O(2n)O(2^n);加记忆化后时间复杂度变为( )。

(1 分)
第 60 题 F4 未作答

记忆化搜索中标记数组 memo[n] 的初始值与含义是( )。

(1 分)
第 61 题 F5 未作答

记忆化搜索与递推(动态规划)的关系是( )。

(1 分)
第 62 题 F6 未作答

记忆化搜索把斐波那契从 O(2n)O(2^n) 降到 O(n)O(n),改善的关键在于( )。

(1 分)
第 63 题 F7 未作答

记忆化搜索代码的标准框架是( )。

(1 分)
第 64 题 F8 未作答

记忆化与普通递归的根本区别是( )。

(1 分)
第 65 题 F9 未作答

记忆化适用的必要条件是( )。

(1 分)
第 66 题 F10 未作答

关于记忆化搜索,错误的是( )。

(1 分)

剪枝优化

10 QUESTIONS · 2 POINTS EACH
第 67 题 G1 未作答

搜索算法中的"剪枝"指的是( )。

(1 分)
第 68 题 G2 未作答

"当前已选数之和已超过目标 tt,直接 return"——这是哪种剪枝( )。

(1 分)
第 69 题 G3 未作答

"求最大值时,当前价值加剩余全选仍 \le 当前最优,剪掉"——这是( )。

(1 分)
第 70 题 G4 未作答

"先试较大的候选数再试较小的"——这属于( )。

(1 分)
第 71 题 G5 未作答

α\alpha-β\beta 剪枝用于( )。

(1 分)
第 72 题 G6 未作答

正确的剪枝不会改变算法的正确性,原因是( )。

(1 分)
第 73 题 G7 未作答

剪枝的加速效果通常用( )来衡量。

(1 分)
第 74 题 G8 未作答

不剪枝的 DFS 在解空间为排列(n!n!)时,n=12n = 12 的搜索量约是( )。

(1 分)
第 75 题 G9 未作答

从若干正整数中选一些使和恰好为 tt,DFS 搜索时应在什么条件下剪枝( )。

(1 分)
第 76 题 G10 未作答

关于剪枝,错误的是( )。

(1 分)

分治

10 QUESTIONS · 2 POINTS EACH
第 77 题 H1 未作答

分治法的三个步骤是( )。

(1 分)
第 78 题 H2 未作答

分治与递归的关系是( )。

(1 分)
第 79 题 H3 未作答

归并排序中"分"与"合"分别指( )。

(1 分)
第 80 题 H4 未作答

快速排序中"分"的具体操作是( )。

(1 分)
第 81 题 H5 未作答

二分查找也可以看作分治,它的递归式与复杂度是( )。

(1 分)
第 82 题 H6 未作答

适合用分治法的问题应满足的条件不包括( )。

(1 分)
第 83 题 H7 未作答

分治算法的复杂度取决于( )。

(1 分)
第 84 题 H8 未作答

主定理中 aabdb^d 的比较决定了复杂度的"档位":a=bda = b^d 时是( )。

(1 分)
第 85 题 H9 未作答

下列问题中,典型用分治法解决的是( )。

(1 分)
第 86 题 H10 未作答

关于分治,错误的是( )。

(1 分)

综合分析

14 QUESTIONS · 2 POINTS EACH
第 87 题 I1 未作答

01for (int i = 0; i < n; ++i)
02    for (int j = i; j < n; ++j)
03        k++;

时间复杂度是( )。

(1 分)
第 88 题 I2 未作答

01for (int i = 1; i <= n; ++i)
02    for (int j = 1; j <= n; j += i)
03        k++;

时间复杂度是( )(调和级数 i=1nn/inlnn\sum_{i=1}^{n} n/i \approx n \ln n)。

(1 分)
第 89 题 I3 未作答

01void f(int n) {
02    if (n <= 1) return;
03    f(n / 2);
04    f(n / 2);
05    for (int i = 0; i < n; ++i) k++;
06}

时间复杂度是( )。

(1 分)
第 90 题 I4 未作答

nn 个数的无序数组中找最大元素,最少需要( )次比较。

(1 分)
第 91 题 I5 未作答

01void g(int n) {
02    if (n <= 0) return;
03    for (int i = 0; i < n; ++i) k++;
04    g(n / 2);
05}

时间复杂度是( )。

(1 分)
第 92 题 I6 未作答

01int c = 0;
02for (int i = 1; i * i <= n; ++i)
03    for (int j = 1; j <= n; j *= 3)
04        c++;

时间复杂度是( )。

(1 分)
第 93 题 I7 未作答

O(n!)O(n!)O(2n)O(2^n)O(n3)O(n^3)O(n2logn)O(n^2 \log n)O(nlogn)O(n \log n) 按增长从慢到快排列,正确的是( )。

(1 分)
第 94 题 I8 未作答

n=106n = 10^6、时限 11 秒(约 10810^8 次运算),O(nlogn)O(n \log n) 的算法( )。

(1 分)
第 95 题 I9 未作答

O(1)O(1) 算法一定比 O(n)O(n) 快,这个说法( )。

(1 分)
第 96 题 I10 未作答

关于时间与空间复杂度,错误的是( )。

(1 分)
第 97 题 I11 未作答

O(logn)O(\log n) 的算法中,nn 翻倍时操作次数( )。

(1 分)
第 98 题 I12 未作答

一个算法的时间复杂度是 O(n2)O(n^2),另一个是 O(nlogn)O(n \log n),当 n=104n = 10^4 时大约差多少倍( )。

(1 分)
第 99 题 I13 未作答

记忆化搜索与递推的关系,正确的是( )。

(1 分)
第 100 题 I14 未作答

n=105n = 10^5,下列复杂度中在 11 秒内无法完成的是( )(设 11 秒约 10810^8 次运算)。

(1 分)

真 题 演 练

3 QUESTIONS · 真题演练不计分
第 1 题 单选 未作答

对于给定的 nn,分析以下代码段对应的时间复杂度,其中最为准确的时间复杂度为( )。

01int i, j, k = 0;
02for (i = 0; i < n; i++) {
03    for (j = 0; j < n; j *= 2) {
04        k = k + n / 2;
05    }
06}

(0 分)
CSP-S 2022 · 单选 第13题 | 知识点 排序稳定性、剪枝、逻辑运算
第 2 题 单选 未作答

以比较为基本运算,在 nn 个数的数组中找最大的数,在最坏情况下至少要做( )次运算。

(0 分)
CSP-S 2022 · 单选 第14题 | 知识点 剪枝、数组越界
第 3 题 单选 未作答

假设一个长度为 nn 的整数数组中每个元素值互不相同,且这个数组是无序的。要找到这个数组中最大元素的时间复杂度是多少?( )

(0 分)
CSP-S 2024 · 单选 第2题 | 知识点 剪枝、排序稳定性