程序员数学基础【二、时间复杂度】(Python版本)(下)

简介: 程序员数学基础【二、时间复杂度】(Python版本)(下)

二、时间复杂度


1.时间复杂度:


1)一般情况下,算法中的基本操作语句的重复执行次数是时间规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋于无穷大时,T(n)/f(n)的极限值是一个不等于0的常数,则称f(n)是T(n)的同量级函数,记做T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度,简称时间复杂度。


2)T(n)不同,但时间复杂度可能相同,如T(n)=n2+7n+6与T(n)=3n2+2n+2,他们的T(n)不同,但时间复杂度相同,都为O(f(n))。


3)计算时间复杂度的方法


√ 常用常数1代替运行时间中的加法常数 如 T(n)=n2+7n+6==> T(n)=n2+7n+1


√ 修改后的运行次数函数中,只保留最高阶项  T(n)=n2+7n+1==> T(n)=n2


√ 去除最高阶项的系数  T(n)=n2==> T(n)=n2==>O(n2)


2.常见的时间复杂度:


1)无循环条件下常数阶 O(1)    最稳定


2)对数阶 如O(log2n)


3)线性阶 O(n)


4)线性对数阶 O(nlog2n) —线性阶*对数阶


5)平方阶 O(n2)    线性阶*线性阶   两层n循环


6)立方阶 O(n3)   三层n循环


7)k次方阶 O(nk)


8)指数阶 O(2n)    执行慢(指数爆炸)


说明:


○常见的时间算法时间复杂度从(1)到(8)越来越复杂,随着n的增大,时间复杂度不断增大,算法的执行效率越来越低(O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2) <O(n3) <O(nk)<O(2n)<O(n)!<O(nn))—简单记法:长对幂指阶


○我们应该尽可能避免(8)指数阶的算法


3.时间复杂度的规则

1)加法规则  T(n)=T1(n)+T2(n)=O(f(n)+O(g(n)=O(max(O(f(n),O(g(n))  多项式相加,只保留最高的阶,且系数变为1


2)乘法规则  T(n)=T1(n)*T2(n)=O(f(n))*O(g(n))=O(f(n)*g(n))  多项相乘,都保留


三、平均时间复杂度与最坏时间复杂度


1)平均时间复杂度是指所有有可能的输入实例均以等概率出现的情况下,该算法的运行时间


2)最坏情况下的时间复杂度是在算法在任何输入实例上运行的界限,就保证了算法的运行时间 不会比最坏情况更长



4、总结:


a)、通过时间复杂度我们就可以计算出我们的代码效率如何,在后期代码优化上起到证明的作用。


下篇内容:


程序员数学基础【三、取模运算(取余运算功能重叠部分)】(Python版本)


https://blog.csdn.net/feng8403000/article/details/114194267


万丈高楼平地起,程序员数学基础,从小学的【什么是数学】至【离散数学】(主要是图论)咱们一步步成长,共同加油。


相关文章
|
28天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
106 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
1月前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
56 7
|
2月前
|
算法 数据处理 Python
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
Savitzky-Golay滤波器是一种基于局部多项式回归的数字滤波器,广泛应用于信号处理领域。它通过线性最小二乘法拟合低阶多项式到滑动窗口中的数据点,在降噪的同时保持信号的关键特征,如峰值和谷值。本文介绍了该滤波器的原理、实现及应用,展示了其在Python中的具体实现,并分析了不同参数对滤波效果的影响。适合需要保持信号特征的应用场景。
171 11
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
|
2月前
|
Shell Python
使用 pyenv 来管理多个 Python 版本(2)
使用 pyenv 来管理多个 Python 版本(2)
128 71
使用 pyenv 来管理多个 Python 版本(2)
|
2月前
|
Ubuntu Shell Linux
pyenv 管理多个 Python 版本(1)
pyenv 管理多个 Python 版本(1)
201 86
pyenv 管理多个 Python 版本(1)
|
Java Linux Shell
centos7内网离线安装face_recognition、python、pip、CMake、dlib,离线升级gcc/切换gcc,文末有face_recognition的docker版本
公司项目需要人脸识别,本来app自带人脸识别,结果api支持的设备试了一圈就一个同事的华为Mate40Pro可以,所以使用无望。接着找了一下免费的java离线人脸识别sdk,发现虹软的确实简单好用,一会就在linux上弄好并测试通过了,然而在准备集成进去开写代码时,不小心看到了一眼首次激活需联网,后续方可离线使用,好吧,我们内网机器首次都不可能的,接着看了下离线激活方法,首先需要企业认证,这一步我们肯定没法做的,毕竟不是之前的小公司了,营业执照啥的随便给我肯定不行,直接放弃了。后来在同事推荐下看了下face_recognition这个项目,之前基本没用过python,于是有了漫长的踩坑之旅。
796 1
|
TensorFlow 算法框架/工具 Python
Python升级tensorflow2.x版本相关问题:No module named ‘tensorflow.contrib‘ 问题解决
Python升级tensorflow2.x版本相关问题:No module named ‘tensorflow.contrib‘ 问题解决
337 0
|
NoSQL Redis 数据安全/隐私保护
redis集群加密码后,python的rediscluster模块升级1.3.4版本不生效
redis集群加密码后,python的rediscluster模块升级1.3.4版本不生效
redis集群加密码后,python的rediscluster模块升级1.3.4版本不生效
|
JSON 移动开发 API
淘宝api Python 接口升级 3.0 版本
因为自学 python  工作中会经常用到淘宝的借口调用数据    一直以来后台下载的淘宝Api 都是2.7版本 还是12年 lihao同学编写,一直没有升级 用Python 自带的2to3脚本工具升级后 大部分接口 调用正常 但是上传图片接口 一直提示错误  由于是初学  只能网上找资料了.
2753 0

热门文章

最新文章

推荐镜像

更多