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库urllib与urllib2主要区别分析
Jul 13 Python
ubuntu安装mysql pycharm sublime
Feb 20 Python
kaggle+mnist实现手写字体识别
Jul 26 Python
老生常谈python中的重载
Nov 11 Python
python图的深度优先和广度优先算法实例分析
Oct 26 Python
Python list与NumPy array 区分详解
Nov 06 Python
python/Matplotlib绘制复变函数图像教程
Nov 21 Python
python3格式化字符串 f-string的高级用法(推荐)
Mar 04 Python
Python新手学习标准库模块命名
May 29 Python
Win10环境中如何实现python2和python3并存
Jul 20 Python
在终端启动Python时报错的解决方案
Nov 20 Python
python爬虫用request库处理cookie的实例讲解
Feb 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读取RSS(Feed)简单实例
2014/06/12 PHP
10个php函数实用却不常见
2015/10/13 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
基于jquery的表头固定的若干方法
2011/01/27 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
vuex分模块后,实现获取state的值
2020/07/26 Javascript
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
python获取标准北京时间的方法
2015/03/24 Python
详解Python3.1版本带来的核心变化
2015/04/07 Python
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
python中的global关键字的使用方法
2019/08/20 Python
django创建简单的页面响应实例教程
2019/09/06 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
瑞典香水、须后水和美容产品购物网站:Parfym-Klick.se
2019/12/29 全球购物
人力资源管理专业自荐信
2014/06/24 职场文书
绘画专业自荐信
2014/07/04 职场文书
2014年质检工作总结
2014/11/26 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
2015年招生工作总结
2015/05/04 职场文书
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers