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实现从字符串中找出字符1的位置以及个数的方法
Aug 25 Python
python实现爬虫统计学校BBS男女比例(一)
Dec 31 Python
Python3最长回文子串算法示例
Mar 04 Python
Python K最近邻从原理到实现的方法
Aug 15 Python
python二进制读写及特殊码同步实现详解
Oct 11 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
Pandas实现DataFrame按行求百分数(比例数)
Dec 27 Python
Pytorch 实现数据集自定义读取
Jan 18 Python
Python unittest 自动识别并执行测试用例方式
Mar 09 Python
Python 读取xml数据,cv2裁剪图片实例
Mar 10 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
Jun 06 Python
python读取excel数据绘制简单曲线图的完整步骤记录
Oct 30 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编程效率 引入缓存机制提升性能
2010/02/15 PHP
php内嵌函数用法实例
2015/03/20 PHP
PHP Web木马扫描器代码分享
2015/09/06 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
2017/01/19 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
[01:18:31]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第一场 1月10日
2021/03/11 DOTA
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
Python玩转Excel的读写改实例
2019/02/22 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
python mysql中in参数化说明
2020/06/05 Python
详解Python中import机制
2020/09/11 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
波兰购物网站:MALL.PL
2019/05/01 全球购物
政风行风建设整改方案
2014/10/27 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
解析原生JS getComputedStyle
2021/05/25 Javascript
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
2021/09/25 Java/Android