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 3中实现类型检查器的简单方法
Jul 03 Python
Python简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
pandas 对series和dataframe进行排序的实例
Jun 09 Python
python读取各种文件数据方法解析
Dec 29 Python
Python设计模式之享元模式原理与用法实例分析
Jan 11 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
Django框架验证码用法实例分析
May 10 Python
关于Python解包知识点总结
May 05 Python
解决Django Haystack全文检索为空的问题
May 19 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
Jun 02 Python
python相对企业语言优势在哪
Jun 12 Python
基于Python实现股票收益率分析
Apr 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
apache+php+mysql安装配置方法小结
2010/08/01 PHP
php中取得URL的根域名的代码
2011/03/23 PHP
php从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
php类自动加载器实现方法
2015/07/28 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
JavaScript之class继承_动力节点Java学院整理
2017/07/03 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
2018/09/21 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
JavaScript仿京东轮播图效果
2021/02/25 Javascript
[01:31]完美与DOTA2历程
2014/07/31 DOTA
Python脚本实现自动发带图的微博
2016/04/27 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
Python实现感知机(PLA)算法
2017/12/20 Python
python判断数字是否是超级素数幂
2018/09/27 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
如何把python项目部署到linux服务器
2020/08/26 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
《老山界》教学反思
2014/04/08 职场文书
环保建议书600字
2014/05/14 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
离婚协议书怎么写
2015/01/26 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
2019奶茶店创业计划书范本,值得你借鉴
2019/08/14 职场文书
html中两种获取标签内的值的方法
2022/06/16 jQuery