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 Queue模块详解
Nov 30 Python
python安装与使用redis的方法
Apr 19 Python
使用Python对SQLite数据库操作
Apr 06 Python
python并发2之使用asyncio处理并发
Dec 21 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
学习python可以干什么
Feb 26 Python
彻底理解Python中的yield关键字
Apr 01 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 Python
Python map及filter函数使用方法解析
Aug 06 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 Python
用Python提取PDF表格的方法
Apr 11 Python
Python中tkinter的用户登录管理的实现
Apr 22 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设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
2015/12/10 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
Javascript 读后台cookie代码
2008/09/15 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
JavaScript面向对象程序设计教程
2016/03/29 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
微信小程序 两种为对象属性赋值的方式详解
2017/02/23 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
2017/04/19 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
Python利用Beautiful Soup模块搜索内容详解
2017/03/29 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
python django中8000端口被占用的解决
2019/12/17 Python
Python unittest框架操作实例解析
2020/04/13 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
绘画专业自荐信
2014/07/04 职场文书
教育合作协议范本
2014/10/17 职场文书
三好学生个人总结
2015/02/15 职场文书
利用Nginx代理如何解决前端跨域问题详析
2021/04/02 Servers
 Python 中 logging 模块使用详情
2022/03/03 Python
基于Redission的分布式锁实战
2022/08/14 Redis