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 相关文章推荐
tornado捕获和处理404错误的方法
Feb 26 Python
Python中用函数作为返回值和实现闭包的教程
Apr 27 Python
Python 使用os.remove删除文件夹时报错的解决方法
Jan 13 Python
python中numpy基础学习及进行数组和矢量计算
Feb 12 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
python实现对求解最长回文子串的动态规划算法
Jun 02 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
Oct 12 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
python实现监控阿里云账户余额功能
Dec 16 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
Feb 11 Python
matplotlib阶梯图的实现(step())
Mar 02 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(1)
2006/10/09 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
php发送post请求函数分享
2014/03/06 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
简单的php购物车代码
2020/06/05 PHP
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
jquery中$.post()方法的简单实例
2014/02/04 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
JS基于面向对象实现的拖拽功能示例
2016/12/20 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
Python的lambda匿名函数的简单介绍
2013/04/25 Python
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
Python判断Abundant Number的方法
2015/06/15 Python
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
python利用正则表达式搜索单词示例代码
2017/09/24 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
Python中SQLite如何使用
2020/05/27 Python
Python读写压缩文件的方法
2020/07/30 Python
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
升国旗演讲稿
2014/09/05 职场文书
汽车转让协议书
2015/01/29 职场文书
电工实训心得体会
2016/01/14 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server