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中的True,False条件判断实例分析
Jan 12 Python
Python进行数据科学工作的简单入门教程
Apr 01 Python
Android应用开发中Action bar编写的入门教程
Feb 26 Python
Python numpy 点数组去重的实例
Apr 18 Python
我喜欢你 抖音表白程序python版
Apr 07 Python
如何用OpenCV -python3实现视频物体追踪
Dec 04 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
Python 如何在字符串中插入变量
Aug 01 Python
python爬虫用scrapy获取影片的实例分析
Nov 23 Python
Python爬虫实现selenium处理iframe作用域问题
Jan 27 Python
Python作用域和名称空间的详细介绍
Apr 13 Python
Python 中面向接口编程
May 20 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日期处理函数 整型日期格式
2011/01/12 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
js no-repeat写法 背景不重复
2009/03/18 Javascript
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
在Swiper内如何制作CSS3动画效果示例代码
2017/12/07 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
javascript History对象原理解析
2020/02/17 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
python去除字符串中的换行符
2017/10/11 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
Python中Selenium库使用教程详解
2020/07/23 Python
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
英国著名的药妆网站:Escentual
2016/07/29 全球购物
高级运动鞋:GREATS
2019/07/19 全球购物
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
元旦联欢会策划方案
2014/06/11 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
消防安全主题班会
2015/08/12 职场文书
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL