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 相关文章推荐
使用C语言扩展Python程序的简单入门指引
Apr 14 Python
Python基础入门之seed()方法的使用
May 15 Python
Python实现Windows上气泡提醒效果的方法
Jun 03 Python
Python 字典与字符串的互转实例
Jan 13 Python
win7上python2.7连接mysql数据库的方法
Jan 14 Python
Python实现购物系统(示例讲解)
Sep 13 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
Feb 18 Python
python 读取DICOM头文件的实例
May 07 Python
详解Python 数据库的Connection、Cursor两大对象
Jun 25 Python
Python使用pickle进行序列化和反序列化的示例代码
Sep 22 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 Python
Pandas 数据编码的十种方法
Apr 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
如何冲泡挂耳包咖啡?技巧是什么
2021/03/04 冲泡冲煮
php提示Failed to write session data错误的解决方法
2014/12/17 PHP
php单例模式的简单实现方法
2016/06/10 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
2018/05/25 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
2019/06/19 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
JavaScript Eval 函数使用
2010/03/23 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
2012/06/18 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
nodejs开发微信小程序实现密码加密
2017/07/11 NodeJs
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
js+audio实现音乐播放器
2020/09/13 Javascript
Python的一些用法分享
2012/10/07 Python
Python中的条件判断语句与循环语句用法小结
2016/03/21 Python
django文档学习之applications使用详解
2018/01/29 Python
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
方正Java笔试题
2014/07/03 面试题
教研活动总结
2014/04/28 职场文书
多媒体教室标语
2014/06/26 职场文书
家庭经济困难证明
2015/06/23 职场文书
2016年春节问候语
2015/11/11 职场文书
生产实习心得体会范文
2016/01/22 职场文书
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电