
做题时,盯着循环看,忽略其他赋值语句。

情况 C:特殊变量变化(除法/乘法原则)

算空间复杂度

递归
递归次数 *每次递归的时间复杂度
举例:

时间复杂度 O(n)
空间复杂度 O(1)

时间复杂度 O(n)
空间复杂度 O(n)

时间复杂度 O( )
空间复杂度 O( )
真题
一、选择题真题(上午题,按年份排序)
2010 年上半年
- 第 58 题 对长度为 n 的有序线性表进行二分查找,最坏情况下的时间复杂度为()。 A. O (1) B. O (n) C. O (log n) D. O (n log n) 答案 :C 解析:二分查找最坏比较次数为log2n
2011 年下半年
- 第 64 题 给定一个整数数组 A,长度为 n,统计其中 -1、0、1 的个数,并按 -1、0、1 重写数组。该算法时间复杂度与空间复杂度分别为()。 A. O (n)、O (1) B. O (n)、O (n) C. O (n²)、O (1) D. O (n²)、O (n) 答案 :A 解析:两轮线性遍历,仅使用常数个临时变量
2012 年上半年
- 第 65 题 下列排序算法中,空间复杂度为 O (1) 且稳定的是()。 A. 快速排序 B. 归并排序 C. 冒泡排序 D. 堆排序 答案 :C 解析:冒泡排序原地排序、算法稳定
2014 年下半年
- 第 57 题 设某算法时间复杂度递推式为:T(n)=2T(n/2)+O(n),则该算法的时间复杂度为()。 A. O (n) B. O (n log n) C. O (n²) D. O (log n) 答案 :B 解析:根据主定理推导得 O(nlogn)
2016 年下半年
- 第 58 题 在长度为 n 的单链表中,查找值为 x 的结点,最坏情况下的时间复杂度为()。 A. O (1) B. O (log n) C. O (n) D. O (n²) 答案 :C 解析:单链表无随机访问,最坏需遍历全部节点
2020 年下半年
- 第 65 题 下列排序算法中,占用辅助空间最多的是()。 A. 归并排序 B. 快速排序 C. 堆排序 D. 冒泡排序 答案 :A 解析:归并排序辅助空间复杂度 O(n),其余均更低
2021 年上半年
- 第 59 题 有算法代码如下:
c
运行
i = 1;
while (i <= n) {
i = i * 2;
}
该循环的时间复杂度为()。 A. O (1) B. O (n) C. O (log n) D. O (n log n) 答案 :C 解析:变量按 2 倍递增,循环次数为log2n
2022 年上半年
- 第 60 题 算法 T(n)=4T(n/2)+n2logn 的时间复杂度为()。 A. Θ(n2) B. Θ(n2logn) C. Θ(n2log2n) D. Θ(n3) 答案 :C 解析:主定理推导结果
2023 年上半年
- 第 57 题 关于算法 "原地工作(in-place)" 的含义,正确的是()。 A. 时间复杂度为 O (1) B. 空间复杂度为 O (1) C. 不需要任何辅助空间 D. 仅需常数个辅助单元 答案 :D 解析:原地工作指辅助空间为常数级别
2024 年上半年
- 第 56 题 已知某双层循环代码:
c
运行
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
s++;
该代码段最坏时间复杂度为()。 A. O (n) B. O (n²) C. O (log n) D. O (n log n) 答案 :B 解析:两层循环,执行次数 n×n
- 第 62 题 快速排序在最坏情况下的时间复杂度和平均情况下的空间复杂度分别是()。 A. O (n²)、O (log n) B. O (n log n)、O (log n) C. O (n²)、O (n) D. O (n log n)、O (n) 答案:A
二、下午案例题真题(软件设计师 算法复杂度大题)
2019 年下半年 试题四
阅读下列算法说明和代码,回答问题。 【代码】
void InsertSort(int arr[], int n)
{
int i, j, temp;
for(i = 1; i < n; i++){
temp = arr[i];
j = i - 1;
while(j >= 0 && arr[j] > temp){
arr[j+1] = arr[j];
j--;
}
arr[j+1] = temp;
}
}
问题 1 :该算法名称是什么? 问题 2:该算法最坏情况下的时间复杂度、空间复杂度分别为多少?
答案
- 直接插入排序
- 时间复杂度O(n2),空间复杂度O(1)
2022 年下半年 试题三
给定有序数组,实现二分查找算法,请回答: 问题:二分查找算法最好、最坏时间复杂度,以及空间复杂度分别是什么?
答案 最好O(1),最坏O(logn);空间复杂度O(1)