python冒泡排序时间复杂度_Python算法中的时间复杂度问题
在实现算法的时候,通常会从两方面考虑算法的复杂度,即时间复杂度和空间复杂度。顾名思义,时间复杂度用于度量算法的计算工作量,空间复杂度用于度量算法占用的内存空间。
本文将从时间复杂度的概念出发,结合实际代码示例分析算法的时间复杂度。
渐进时间复杂度
时间复杂度是算法运算所消耗的时间,因为不同大小的输入数据,算法处理所要消耗的时间是不同的,因此评估一个算运行时间是比较困难的,所以通常关注的是时间频度,即算法运行计算操作的次数,记为T(n),其中n称为问题的规模。
同样,因为n是一个变量,n发生变化时,时间频度T(n) 也在发生变化,我们称时间复杂度的极限情形称为算法的渐近时间复杂度,记为O(n),不包含函数的低阶和首项系数。
我们以如下 例子来解释一下:
如上例子中,我们根据代码上执行的平均时间假设,计算 run_time(n) 函数的时间复杂度,如下:
上述时间复杂度计算公式T(n) ,是我们对函数 run_time(n) 进行的时间复杂度的估算。当n 值非常大的时候,T(n)函数中常数项 time0 以及n的系数 (time1+time2+time3+time4) 对n的影响也可以忽略不计了,因此这里函数run_time(n) 的时间复杂度我们可以表示为 O(n)。
因为我们计算的是极限状态下(如,n非常大)的时间复杂度,因此其中存在以下两种特性:
低阶项相对于高阶项产生的影响很小,可以忽略不计。 最高项系数对最高项的影响也很小,可以忽略不计。
根据上述两种特性,时间复杂度的计算方法:
1.只取最高阶项,去掉低阶项。
2.去掉最高项的系数。
3.针对常数阶,取时间复杂度为O(1)。
我们通过下面例子理解一下常见的时间复杂度,如下:
时间复杂度:常数阶 O(1)
时间复杂度:线性阶 O(n)
时间复杂度:线性阶 O(n)
时间复杂度:平方阶 O(n^2)
时间复杂度:平方阶 O(n^2)
时间复杂度:平方阶 O(n^2)
时间复杂度:立方阶 O(n^3)
时间复杂度:对数阶 O(logn)
随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低,时间复杂度排序如下:
练习一下
如下count_sort 函数实现了计数排序,列表中的数范围都在0到100之间,列表长度大约为100万。
如上count_sort 函数的 空间复杂度为 O(n),公式如下:
总结
以上所述是小编给大家介绍的Python算法中的时间复杂度问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
时间: 2019-11-18
python冒泡排序时间复杂度_Python算法中的时间复杂度问题相关推荐
- 排序算法中平均时间复杂度_操作系统中的作业排序(算法,时间复杂度和示例)...
排序算法中平均时间复杂度 作业排序 (Job sequencing) Job sequencing is the set of jobs, associated with the job i wher ...
- python冒泡排序函数_python冒泡排序-Python,冒泡排序
arr = [ 7 , 4 , 3 , 67 , 34 , 1 , 8 ] . def bubble_sort : 最近在学习Python,下面是我的一些笔记 冒泡排序 实现思路: 使用双重for循环 ...
- 时间复杂度(算法的渐进时间复杂度)
0.时间复杂度:算法执行的次数(或者程序运行所需要的时间) 1.时间=执行次数 2.定义:程序T(n)随着问题规模n的增加,确定f(n)的数量级,记做 T(n)=O(f(n)),增长率(看程序潜在能力 ...
- python 聚类_聚类算法中的四种距离及其python实现
欧氏距离 欧式距离也就是欧几里得距离,是最常见也是最简单的一种距离,再n维空间下的公式为: 在python中,可以运用scipy.spatial.distance中的pdist方法来实现,但需要调整其 ...
- python排序算法的时间复杂度_Python算法的时间复杂度和空间复杂度(实例解析)
算法复杂度分为时间复杂度和空间复杂度. 其作用: 时间复杂度是指执行算法所需要的计算工作量: 而空间复杂度是指执行这个算法所需要的内存空间. (算法的复杂性体现在运行该算法时的计算机所需资源的多少上, ...
- python count函数时间复杂度_Python(算法)-时间复杂度和空间复杂度
时间复杂度 算法的时间复杂度是一个函数,它定量描述了该算法的运行时间,时间复杂度常用"O"表述,使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况 时间 ...
- js算法中的时间复杂度
大O表示法,是通过类比的方式来描述计算机算法的效率 常见的有 符号 名称 O(1) 常数 O(log(n)) 对数 O(n) 线性 O(nlog(n)) 线性和对数乘积 O(n²) 平方 O(2^n) ...
- python编程模式_Python编程中的反模式
原标题:Python编程中的反模式 这篇文章收集了我在Python新手开发者写的代码中所见到的不规范但偶尔又很微妙的问题. 本文的目的是为了帮助那些新手开发者渡过写出丑陋的Python代码的阶段. 对 ...
- python npv 计算公式_Python numpy 中常用的数据运算
Numpy 精通面向数组编程和思维方式是成为Python科学计算大牛的一大关键步骤.--<利用Python进行数据分析> Numpy(Numerical Python)是Python科学计 ...
最新文章
- 自定义控件详解(六):Paint 画笔MaskFilter过滤
- java12章_【有书共读】java核心技术卷1--第12章
- android里Conversion to Dalvik format failed with error 1错误的解决
- 车品觉 | 大数据的价值:找到别人的“集体智慧”
- python接口测试覆盖率统计_从 jacoco 报告数据分析,python 脚本实现增量覆盖率统计...
- 利用VSCode阅读OpenFOAM源代码及其调试Debug【终极总结篇】
- 记一次 Oracle无法连接 问题分析
- [WCF安全系列]绑定、安全模式与客户端凭证类型:NetNamedPipeBinding、NetTcpBinding与NetMsmqBinding...
- LeetCode 792. 匹配子序列的单词数(Number of Matching Subsequences)
- 惠普Teradici PCoIP 受OpenSSL 漏洞影响,波及1500万个端点
- python机器学习案例系列教程——最小生成树(MST)的Prim算法和Kruskal算法
- centos7,关闭mysql。出现mysql启动不了的情况
- 项目回顾-RecyclerView和CheckBox错乱问题
- javascript及css实现居中效果
- 2. mirth connect探索------------ cs模式客户端登录
- 海思SDK学习(5)海思媒体处理软件平台MMP(4)VO视频输出
- 在原有产品的基础上建立软件产品线的方式
- Z 字形变换(Python)
- dp专题 神奇的口袋
- Unity3d插件分享之Assetbundle工具2021最好用工具没有之一
热门文章
- Java通讯录管理系统使用线性表任务台程序
- 基于JAVA+SpringBoot+Mybatis+MYSQL的校园招聘管理系统
- 基于JAVA+SpringMVC+MYSQL的数码商城
- 基于JAVA+SpringBoot+Mybatis+MYSQL的酒店管理系统
- MySQL还是h5储存数据_h5中五大存储方式
- 内存映射处理大文件[转载]
- PTA-1021—— Deepest Root(最后两组数据错误)
- 二维数组中的查找(java)
- Project 'king.commons' is missing required library: 'lib/plweb.jar'		Build path	Build Path Problem
- a href='NewsShow.aspx?id=%#Eval(id) %' class=red%#Eval(title) %/a页面传值