Python算法的时间复杂度和空间复杂度(实例解析)


Posted in Python onNovember 19, 2019

算法复杂度分为时间复杂度和空间复杂度。

其作用:

时间复杂度是指执行算法所需要的计算工作量;
而空间复杂度是指执行这个算法所需要的内存空间。
(算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间和空间复杂度)。

简单来说,时间复杂度指的是语句执行次数,空间复杂度指的是算法所占的存储空间

计算时间复杂度的方法:

  • 用常数1代替运行时间中的所有加法常数
  • 修改后的运行次数函数中,只保留最高阶项
  • 去除最高阶项的系数

时间复杂度

算法的时间复杂度是一个函数,它定量描述了该算法的运行时间,时间复杂度常用“O”表述,使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况

时间复杂度是用来估计算法运行时间的一个式子(单位),一般来说,时间复杂度高的算法比复杂度低的算法慢

print('Hello world') # O(1)
# O(1)
print('Hello World')
print('Hello Python')
print('Hello Algorithm')
for i in range(n): # O(n)
 print('Hello world')
for i in range(n): # O(n^2)
 for j in range(n):
 print('Hello world')
for i in range(n): # O(n^2)
 print('Hello World')
 for j in range(n):
 print('Hello World')
for i in range(n): # O(n^2)
 for j in range(i):
 print('Hello World')
for i in range(n):
 for j in range(n):
 for k in range(n):
  print('Hello World') # O(n^3)

 几次循环就是n的几次方的时间复杂度

n = 64
while n > 1:
 print(n)
 n = n // 2

 26 = 64,log264 = 6,所以循环减半的时间复杂度为O(log2n),即O(logn)

如果是循环减半的过程,时间复杂度为O(logn)或O(log2n)

常见的时间复杂度高低排序:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n2logn)<O(n3)

空间复杂度

空间复杂度:用来评估算法内存占用大小的一个式子

a = 'Python' # 空间复杂度为1
# 空间复杂度为1
a = 'Python'
b = 'PHP'
c = 'Java'
num = [1, 2, 3, 4, 5] # 空间复杂度为5
num = [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]] # 空间复杂度为5*4
num = [[[1, 2], [1, 2]], [[1, 2], [1, 2]] , [[1, 2], [1, 2]]] # 空间复杂度为3*2*2

 定义一个或多个变量,空间复杂度都是为1,列表的空间复杂度为列表的长度

总结

以上所述是小编给大家介绍的Python算法的时间复杂度和空间复杂度,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python不带重复的全排列代码
Aug 13 Python
Python库urllib与urllib2主要区别分析
Jul 13 Python
Python标准库与第三方库详解
Jul 22 Python
编写Python的web框架中的Model的教程
Apr 29 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 Python
Flask web开发处理POST请求实现(登录案例)
Jul 26 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
Jul 15 Python
Python3 元组tuple入门基础
Feb 09 Python
python实现Pyecharts实现动态地图(Map、Geo)
Mar 25 Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 Python
关于Flask项目无法使用公网IP访问的解决方式
Nov 19 #Python
Python算法中的时间复杂度问题
Nov 19 #Python
wxPython窗体拆分布局基础组件
Nov 19 #Python
Python解压 rar、zip、tar文件的方法
Nov 19 #Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
Nov 19 #Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
Nov 19 #Python
python flask搭建web应用教程
Nov 19 #Python
You might like
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
2013/06/05 PHP
解析PHP对现有搜索引擎的调用
2013/06/25 PHP
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
简单实用的网站PHP缓存类实例
2014/07/18 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
php curl常用的5个经典例子
2017/01/20 PHP
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
2007/09/04 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
编写简单的jQuery提示插件
2014/12/21 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
2016/01/27 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
用纯css3实现的图片放大镜特效效果非常不错
2014/09/02 HTML / CSS
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
大学生实习期自我评价范文
2013/10/03 职场文书
销售员岗位职责范本
2014/02/03 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
校园公益广告语
2014/03/13 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
出售房屋协议书范本
2014/10/06 职场文书
亮剑观后感600字
2015/06/05 职场文书
logback 实现给变量指定默认值
2021/08/30 Java/Android
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis
关于vue-router-link选择样式设置
2022/04/30 Vue.js