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模拟登录百度贴吧(百度贴吧登录)实例
Dec 18 Python
用Python和MD5实现网站挂马检测程序
Mar 13 Python
django通过ajax发起请求返回JSON格式数据的方法
Jun 04 Python
python实现多线程的方式及多条命令并发执行
Jun 07 Python
python 打印对象的所有属性值的方法
Sep 11 Python
Python序列化基础知识(json/pickle)
Oct 19 Python
python使用numpy读取、保存txt数据的实例
Oct 14 Python
Python面向对象进阶学习
May 21 Python
python多线程与多进程及其区别详解
Aug 08 Python
Python学习笔记之While循环用法分析
Aug 14 Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 Python
Python flask框架实现查询数据库并显示数据
Jun 04 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防CC攻击实现代码
2011/12/29 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
javascript三种代码注释方法
2016/06/02 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
2017/03/04 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
原生js实现随机点名
2020/07/05 Javascript
python里将list中元素依次向前移动一位
2014/09/12 Python
Python常用模块介绍
2014/11/21 Python
Python实现遍历数据库并获取key的值
2015/05/17 Python
python中的colorlog库使用详解
2019/07/05 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
python实现一个点绕另一个点旋转后的坐标
2019/12/04 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
毕业生写求职信的要点
2014/03/04 职场文书
《去年的树》教学反思
2014/04/11 职场文书
学生个人评语大全
2015/01/04 职场文书
关于开学的感想
2015/08/10 职场文书
《月球之谜》教学反思
2016/02/20 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS