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 专题一 函数的基础知识
Mar 16 Python
使用Python实现博客上进行自动翻页
Aug 23 Python
python获取程序执行文件路径的方法(推荐)
Apr 26 Python
在NumPy中创建空数组/矩阵的方法
Jun 15 Python
判断python字典中key是否存在的两种方法
Aug 10 Python
Python语法分析之字符串格式化
Jun 13 Python
Python将视频或者动态图gif逐帧保存为图片的方法
Sep 10 Python
django使用xadmin的全局配置详解
Nov 15 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 Python
使用python的turtle函数绘制一个滑稽表情
Feb 28 Python
python+opencv实现移动侦测(帧差法)
Mar 20 Python
Python软件包安装的三种常见方法
Jul 07 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中一些可能会被忽略的问题
2013/06/21 PHP
php Calender(日历)代码分享
2014/01/03 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
2015/11/10 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
2018/05/07 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
[02:07]DOTA2超级联赛专访BBC:难忘网吧超神经历
2013/06/09 DOTA
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
推荐8款常用的Python GUI图形界面开发框架
2020/02/23 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
公司年会晚宴演讲稿
2014/01/06 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
小学教师暑期培训方案
2014/08/28 职场文书
服务明星事迹材料
2014/12/29 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
2015年春训学习心得体会范文
2015/03/09 职场文书
信用卡收入证明范本
2015/06/12 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python