软考中级——软件设计师考点7 时间复杂度、空间复杂度 和对应真题

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

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

算空间复杂度

递归

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

举例:

时间复杂度 O(n)

空间复杂度 O(1)

时间复杂度 O(n)

空间复杂度 O(n)

时间复杂度 O( )

空间复杂度 O( )

真题

一、选择题真题(上午题,按年份排序)

2010 年上半年

  1. 第 58 题 对长度为 n 的有序线性表进行二分查找,最坏情况下的时间复杂度为()。 A. O (1) B. O (n) C. O (log n) D. O (n log n) 答案 :C 解析:二分查找最坏比较次数为log2n

2011 年下半年

  1. 第 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 年上半年

  1. 第 65 题 下列排序算法中,空间复杂度为 O (1) 且稳定的是()。 A. 快速排序 B. 归并排序 C. 冒泡排序 D. 堆排序 答案 :C 解析:冒泡排序原地排序、算法稳定

2014 年下半年

  1. 第 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 年下半年

  1. 第 58 题 在长度为 n 的单链表中,查找值为 x 的结点,最坏情况下的时间复杂度为()。 A. O (1) B. O (log n) C. O (n) D. O (n²) 答案 :C 解析:单链表无随机访问,最坏需遍历全部节点

2020 年下半年

  1. 第 65 题 下列排序算法中,占用辅助空间最多的是()。 A. 归并排序 B. 快速排序 C. 堆排序 D. 冒泡排序 答案 :A 解析:归并排序辅助空间复杂度 O(n),其余均更低

2021 年上半年

  1. 第 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 倍递增,循环次数为log2​n


2022 年上半年

  1. 第 60 题 算法 T(n)=4T(n/2)+n2logn 的时间复杂度为()。 A. Θ(n2) B. Θ(n2logn) C. Θ(n2log2n) D. Θ(n3) 答案 :C 解析:主定理推导结果

2023 年上半年

  1. 第 57 题 关于算法 "原地工作(in-place)" 的含义,正确的是()。 A. 时间复杂度为 O (1) B. 空间复杂度为 O (1) C. 不需要任何辅助空间 D. 仅需常数个辅助单元 答案 :D 解析:原地工作指辅助空间为常数级别

2024 年上半年

  1. 第 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

  1. 第 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:该算法最坏情况下的时间复杂度、空间复杂度分别为多少?

答案

  1. 直接插入排序
  2. 时间复杂度O(n2),空间复杂度O(1)

2022 年下半年 试题三

给定有序数组,实现二分查找算法,请回答: 问题:二分查找算法最好、最坏时间复杂度,以及空间复杂度分别是什么?

答案 最好O(1),最坏O(logn);空间复杂度O(1)

相关推荐
秋越2 天前
软考中级嵌入式——第十七章 多媒体基础知识
嵌入式·多媒体·软考中级·嵌入式系统设计师
闲人不梦卿9 天前
软件设计师-复习
软件设计师
雪碧聊技术20 天前
上午题_算法
算法·软考·软件设计师
软考幸福哥23 天前
【第4章:信息系统架构】:系统集成项目管理工程师默写本
软考中级·系统集成项目管理工程师默写本·系统集成考试考点
xy34531 个月前
软件评测师基础知识专项刷题:网络安全技术(三)
刷题·软考·备考·软件设计师·软件评测师
雪碧聊技术1 个月前
上午题_操作系统
操作系统·软件设计师
xy34531 个月前
软件评测师基础知识专项刷题:网络安全技术(一)
刷题·软考·备考·软件设计师·软件评测师
xy34531 个月前
软件评测师基础知识专项刷题:信息系统生命周期(一)
刷题·软考·备考·软件设计师·软件评测师
未来之窗软件服务2 个月前
算法设计—计算机等级考试—软件设计师考前备忘录—东方仙盟
算法·软件设计师·计算机等级考试