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为tornado添加recaptcha验证码功能
Feb 26 Python
python通过pil模块获得图片exif信息的方法
Mar 16 Python
python fabric实现远程部署
Jan 05 Python
python 环境变量和import模块导入方法(详解)
Jul 11 Python
详解appium+python 启动一个app步骤
Dec 20 Python
python flask中静态文件的管理方法
Mar 20 Python
对python numpy数组中冒号的使用方法详解
Apr 17 Python
Python向Excel中插入图片的简单实现方法
Apr 24 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
Oct 22 Python
python字符串的拼接方法总结
Nov 18 Python
wxpython+pymysql实现用户登陆功能
Nov 19 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 常用字符串函数总结
2008/03/15 PHP
PHP实现Socket服务器的代码
2008/04/03 PHP
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
jquery 无限级联菜单案例分享
2013/03/26 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
2013/07/29 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
vue父子组件通信的高级用法示例
2019/08/29 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
JavaScript实现打字游戏
2021/02/19 Javascript
Python标准库笔记struct模块的使用
2018/02/22 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
如何理解python中数字列表
2020/05/29 Python
Django多个app urls配置代码实例
2020/11/26 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
军训感想500字
2014/02/20 职场文书
课例研修方案
2014/05/31 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
现役军人家属慰问信
2015/03/24 职场文书
python入门之算法学习
2021/04/22 Python
pytorch实现ResNet结构的实例代码
2021/05/17 Python
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python
Hive HQL支持2种查询语句风格
2022/06/25 数据库