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 sys模块sys.path使用方法示例
Dec 04 Python
对于Python的Django框架使用的一些实用建议
Apr 03 Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 Python
python机器学习之神经网络实现
Oct 13 Python
python 执行文件时额外参数获取的实例
Dec 18 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
python 梯度法求解函数极值的实例
Jul 10 Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 Python
jupyter实现重新加载模块
Apr 16 Python
使用sklearn对多分类的每个类别进行指标评价操作
Jun 11 Python
Numpy 多维数据数组的实现
Jun 18 Python
在python中读取和写入CSV文件详情
Jun 28 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+MYSQL开发工具及资源收藏
2007/01/02 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
php生出随机字符串
2017/07/06 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
jquery常用操作小结
2014/07/21 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
详细介绍Python的鸭子类型
2016/09/12 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
Python切片操作实例分析
2018/03/16 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
2018/11/06 Python
Python何时应该使用Lambda函数
2019/07/02 Python
python with (as)语句实例详解
2020/02/04 Python
python实现二分查找算法
2020/09/18 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
巴西购物网站:Estrela10
2018/12/13 全球购物
渗透攻击的测试步骤
2014/06/07 面试题
科研课题实施方案
2014/03/18 职场文书
保密工作整改报告
2014/11/06 职场文书
婚礼父母答谢词
2015/01/04 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers