Python算法中的时间复杂度问题

作者:软件测试开发技术栈 时间:2021-03-20 04:52:50 

在实现算法的时候,通常会从两方面考虑算法的复杂度,即时间复杂度和空间复杂度。顾名思义,时间复杂度用于度量算法的计算工作量,空间复杂度用于度量算法占用的内存空间。

Python算法中的时间复杂度问题

本文将从时间复杂度的概念出发,结合实际代码示例分析算法的时间复杂度。

渐进时间复杂度

时间复杂度是算法运算所消耗的时间,因为不同大小的输入数据,算法处理所要消耗的时间是不同的,因此评估一个算运行时间是比较困难的,所以通常关注的是时间频度,即算法运行计算操作的次数,记为T(n),其中n称为问题的规模。

同样,因为n是一个变量,n发生变化时,时间频度T(n) 也在发生变化,我们称时间复杂度的极限情形称为算法的渐近时间复杂度,记为O(n),不包含函数的低阶和首项系数。

我们以如下 例子来解释一下:

Python算法中的时间复杂度问题

如上例子中,我们根据代码上执行的平均时间假设,计算 run_time(n) 函数的时间复杂度,如下:

Python算法中的时间复杂度问题

上述时间复杂度计算公式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)

Python算法中的时间复杂度问题

时间复杂度:线性阶 O(n)

Python算法中的时间复杂度问题

时间复杂度:线性阶 O(n)

Python算法中的时间复杂度问题

时间复杂度:平方阶 O(n^2)

Python算法中的时间复杂度问题

时间复杂度:平方阶 O(n^2)

Python算法中的时间复杂度问题

时间复杂度:平方阶 O(n^2)

Python算法中的时间复杂度问题

时间复杂度:立方阶 O(n^3)

Python算法中的时间复杂度问题

时间复杂度:对数阶 O(logn)

Python算法中的时间复杂度问题

随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低,时间复杂度排序如下:

Python算法中的时间复杂度问题

练习一下

如下count_sort 函数实现了计数排序,列表中的数范围都在0到100之间,列表长度大约为100万。

Python算法中的时间复杂度问题

如上count_sort 函数的 空间复杂度为 O(n),公式如下:

Python算法中的时间复杂度问题

总结

以上所述是小编给大家介绍的Python算法中的时间复杂度问题网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://developer.51cto.com/art/201911/606148.htm

标签:python,算法,时间复杂度
0
投稿

猜你喜欢

  • Go语言实现文件上传

    2023-07-08 18:26:38
  • Oracle9i 动态SGA,PGA特性探索

    2009-04-24 12:39:00
  • 一个小技巧mysql命令行分页

    2011-01-29 16:33:00
  • 在ASP中使用SQL语句之4:联合语句

    2007-08-11 12:34:00
  • PHP执行linux系统命令的常用函数使用说明

    2023-10-19 11:28:39
  • 如何用CocosCreator制作微信小游戏

    2023-08-23 16:00:02
  • ASP用户登录模块的设计

    2008-11-21 16:55:00
  • J2EE基础应用:J2EE中SQL语句自动构造方法

    2009-09-18 09:06:00
  • 微信小程序实现图片上传功能

    2023-09-06 13:08:44
  • python 字典常用方法超详细梳理总结

    2023-06-29 05:48:40
  • removeChild的障眼法

    2009-12-04 12:49:00
  • python 负数取模运算实例

    2022-06-17 00:50:49
  • 在js中调用asp页面的方法

    2007-08-21 20:30:00
  • SQL Server 2000 作数据库服务器的优点

    2009-01-23 13:47:00
  • Python机器学习之KNN近邻算法

    2022-05-12 23:14:17
  • ASP实现GB2312转UTF-8函数

    2009-02-26 13:08:00
  • ASP判断E-Mail的合法性,以及过滤邮箱字符

    2010-05-27 12:23:00
  • python实现sm2和sm4国密(国家商用密码)算法的示例

    2021-11-17 08:02:13
  • python3的数据类型及数据类型转换实例详解

    2022-06-30 11:24:45
  • php遍历目录方法小结

    2023-11-17 12:49:40
  • asp之家 网络编程 m.aspxhome.com