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 socket多线程通讯实例分析(聊天室)
Apr 06 Python
利用Python批量生成任意尺寸的图片
Aug 29 Python
Python做简单的字符串匹配详解
Mar 21 Python
Python简单计算数组元素平均值的方法示例
Dec 26 Python
PyCharm代码提示忽略大小写设置方法
Oct 28 Python
python学生信息管理系统实现代码
Dec 17 Python
Python CSV文件模块的使用案例分析
Dec 21 Python
python 实现按对象传值
Dec 26 Python
在Tensorflow中查看权重的实现
Jan 24 Python
Python连接mysql方法及常用参数
Sep 01 Python
python用Tkinter做自己的中文代码编辑器
Sep 07 Python
Python的scikit-image模块实例讲解
Dec 30 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
10个实用的PHP代码片段
2011/09/02 PHP
php mail to 配置详解
2014/01/16 PHP
19个超实用的PHP代码片段
2014/03/14 PHP
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
JS设计模式之数据访问对象模式的实例讲解
2017/09/30 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
简化vuex的状态管理方案的方法
2018/06/02 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
vue实现滑动超出指定距离回顶部功能
2019/07/31 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
[03:12]完美世界DOTA2联赛PWL DAY7集锦
2020/11/06 DOTA
win与linux系统中python requests 安装
2016/12/04 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
毕业证丢失证明
2014/01/15 职场文书
干部行政关系介绍信
2014/01/17 职场文书
优秀教师感人事迹材料
2014/05/04 职场文书
促销活动总结怎么写
2014/06/25 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
委托证明范本
2014/11/25 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL
python实现简单倒计时功能
2021/04/21 Python
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js