数据结构——时间复杂度和空间复杂度

本文详细介绍了时间复杂度和空间复杂度的概念,它们是衡量算法效率的重要指标。时间复杂度关注算法运行所需时间,而空间复杂度则关注算法执行过程中的内存占用。通过大O阶方法,可以简化计算复杂度的过程。文中列举了若干常见算法的时间复杂度和空间复杂度实例,并提供了相关算法练习题,帮助读者深入理解和应用这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.什么是时间复杂度和空间复杂度

1.1时间复杂度

1.2空间复杂度

2.如何计算时间复杂度和空间复杂度

2.1使用大O阶方法

2.2计算一些常用算法的时间复杂度

2.3计算一些常用算法的空间复杂度

3.对复杂度有要求的算法练习题


1.什么是时间复杂度和空间复杂度

在了解两个复杂度之前,我们先来了解一下 什么是算法的效率。

算法的效率分为两种:  时间效率和空间效率

1. 时间效率被称为时间复杂度,它主要是衡量一个算法的运行速度

2. 空间效率被称为空间复杂度,它主要是衡量一个算法所需要的额外空间

1.1时间复杂度

一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。

1.2空间复杂度

空间复杂度是对一个算法的运行过程中临时占用存储空间大小的量度。空间复杂度不是程序占用了多少字节的空间,所以空间复杂度算的是变量个数。

2.如何计算时间复杂度和空间复杂度

2.1使用大O阶方法

在实际中计算空间复杂度时,并不一定要计算精确的执行次数,而只需要 大概执行的次数,所以我们用 大O的渐进表示法。

推导大O阶方法:

1. 用 常数1取代 运行时间中的 所有加法常数.  [O(100)=>O(1)]

2. 在修改后的运行次数函数中,只保留最高阶项 .[O(n*n+2n+10)=>O(n^2)] [O(n+10)=>O(n)]

3. 如果最高阶项存在且不是1,则 去除与这个项目相乘的常数。 得到的结果就是大O阶。

2.2计算一些常用算法的时间复杂度

计算Funcl的时间复杂度 

 计算strchar的时间复杂度

 

2.3计算一些常用算法的空间复杂度

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度,计算的是变量个数

时间是累计的,空间是不累计的

循环走了几次,重复利用的是一个空间

 计算冒泡排序法的空间复杂度

计算 Factorial的空间复杂度

 

 

3.对复杂度有要求的算法练习题

面试题 17.04. 消失的数字 - 力扣(LeetCode) (leetcode-cn.com)

 

189. 轮转数组 - 力扣(LeetCode) (leetcode-cn.com)

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙宇航的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值