408考研数据结构复习-时间复杂度与空间复杂度-附统考真题

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 408考研数据结构复习-时间复杂度与空间复杂度-附统考真题

文章目录


一、时间复杂度

二、空间复杂度

三、相关题目


一、时间复杂度


一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句的频度之和记为T(n),它是该算法问题规模n的函数,时间复杂度主要分析T(n)的数量级。算法中基本运算(最深层循环内的语句)的频度与T(n)同数量级,因此通常采用算法中基本运算的频度f(n)来分析算法的时间复杂度。因此,算法的时间复杂度记为T(n)=O(f(n))。


式中,O的含义是T(n)的数量级,其严格的数学定义是:若T(n)和f(n)是定义在正整数集合上的两个函数,则存在正常数C和n0,使得当n>=n0时,都满足0<=T(n)<=Cf(n)。


算法的时间复杂度不仅依赖于问题的规模n,也取决于待输入数据的性质。例如,在数组A[0…n-1]中,查找给定值k的算法大致如下:


int i=n-1;
while(i>=0&&(A[i]!=k))
  i--;
return i;


该算法中语句i--;(基本运算)的频度不仅与问题规模n有关,还与输入实例中A的各元素的取值以及k的取值有关:

①若A中没有与k相等的元素,则语句3的频度f(n)=n。

①若A中最后一个元素为k,则语句3的频度f(n)=0。


最坏时间复杂度是指在最坏情况下,算法的时间复杂度。平均时间复杂度是指所有可能输入实例在等概率出现的情况下,算法的期望运行时间。最好时间复杂度是指在最好情况下,算法的时间复杂度。一般总是考虑在最坏情况下的时间复杂度,以保证算法的运行时间不会比它更长。


在分析一个程序的时间复杂性时,有以下两条规则:

①加法规则


T(n)=T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))


②乘法规则


T(n)=T1(n)*T2(n)=O(f(n))*O(g(n))=O(f(n)*g(n))


常见的渐近时间复杂度为:


O(1)<O(logn)<O(n)<O(nlogn)<O(n*n)<O(n*n*n)<O(2的n方)<O(n!)<O(n的n方)


二、空间复杂度


算法的空间复杂度S(n)定义为该算法所耗费的存储空间,它是问题规模n的函数。记为S(n)=O(g(n))。


一个程序在执行时除需要存储空间来存放本身所用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为实现计算所需信息的辅助空间。若输入数据所占空间只取决于问题本身,和算法无关,则只需分析除输入和程序之外的额外空间。


算法原地工作是指算法所需的辅助空间为常量,即O(1)。


三、相关题目


1 以下算法的时间复杂度为(O(log2n))


void fun(int n){
    int i=1;
    while (i<=n)
        i=i*2;
}


解析:找到基本运算i=i*2,设执行次数为t,则2的t次方<=n,即t<=log2n,因此时间复杂度T(n)=O(log2n)。


2 有以下算法,其时间复杂度为(O(n的根号3方))


void fun(int n){
    int i=0;
    while (i*i*i<=n)
        i++;
}


解析:基本运算为i++,设执行次数为t,有ttt<=n,即t的3次方<=n,则t<=n的根号3次方。


3 程序段如下:


for(int i= n-1; i > 1; i--)
  for (int j = 1; j < i; j++) 
  if(A[j]>A[j+1])
    A[j]与A[j+1]对换;


其中n为正整数,则最后一行语句的频度在最坏情况下是(O(n*n))

解析:


79f987ffa91c4d44806f12aaabdb0b85.jpg


4 【2011统考真题】设n是描述问题规模的非负整数,下面的程序片段的时间复杂度是(O(log2n))


x=2;
while(x<n/2)
  x=2*x;


解析:基本运算为x=2*x,每执行一次乘以2,设执行次数为t,则有2的(t+1)次方<n/2,所以t<log2(n/2)-1=log2n-2,则T(n)=O(log2n)。


5 【2012统考真题】求整数n的阶乘的算法如下,其时间复杂度是(O(n))


int fact(int n){
    if(n<=1) return 1;
    return n* fact(n-1);
}


解析:该递归相当于返回O(n)次。


6 【2013统考真题】已知两个长度分别为m和n的升序链表,若将它们合并为长度为m+n的一个降序链表,则最坏情况下的时间复杂度是(O(max(m,n)))

解析:两个升序链表合并,两两比较表中元素,每比较一次,确定一个元素的链接位置(取较小元素)。当一个链表比较结束后,将另一个链表的剩余元素插入即可。最坏的情况是两个链表中的元素依次进行比较,因为2max(m,n)>=m+n,所以时间复杂度为O(max(m,n))。


7 【2014统考真题】下列程序段的时间复杂度是(nlong2n)


count=0;
for(k=1;k<=n;k*=2)
  for(j=1;j<=n;j++)
  count++;


解析:内层循环条件j<=n与外层循环的变量无关,各自独立,每执行一次j自增1,每次内层循环都执行n次。外层循环条件k<=n,增量定义为k*=2,可知循环次数t满足k=2的t次方<=n,即t<=log2n。内层循环的时间复杂度为O(n),外层为O(log2n)。对于嵌套循环,根据乘法法则可知,T(n)=O(n)*O(log2n)=O(nlog2n)。


相关文章
|
2月前
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
69 4
|
27天前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
2月前
|
机器学习/深度学习 存储 缓存
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
文章主要介绍了排序算法的分类、时间复杂度的概念和计算方法,以及常见的时间复杂度级别,并简单提及了空间复杂度。
30 1
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
|
27天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
27天前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
27天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
27天前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
27天前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
27天前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找习题精讲等具体详解步骤以及举例说明
|
27天前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构的基本概念;算法的基本概念、特性以及时间复杂度、空间复杂度等举例说明;【含常见的报错问题及其对应的解决方法】