科学知识:时间复杂度计算方法

作者:junjie 时间:2023-09-18 21:42:28 

一、定义

(1)如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数 T(n)称为这一算法的“时间复杂性”。我们常用大O表示法表示时间复杂性,称之为大O记法。
(2)一个问题本身也有它的复杂性,如果某个算法的复杂性到达了这个问题复杂性的下界,那就称这样的算法是最佳算法。常见的时间复杂度高低顺序如下:
O(1) 常数阶 < O(logn) 对数阶 < O(n) 线性阶 < O(nlogn) < O(n^2) 平方阶 < O(n^3) < O(2^n) < O(n!) < O(n^n)

二、时间复杂度计算步骤

⑴ 找出算法中的基本语句;
算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。
⑵ 计算基本语句的执行次数的数量级;
只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。
⑶ 用大Ο记号表示算法的时间性能。
将基本语句执行次数的数量级放入大Ο记号中。
如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。

三、时间复杂度计算规则

(1)对于一些简单的输入输出语句或赋值语句,近似认为需要O(1)时间
(2)对于顺序结构,需要依次执行一系列语句所用的时间可采用大O下"求和法则"
求和法则:是指若算法的2个部分时间复杂度分别为 T1(n)=O(f(n))和 T2(n)=O(g(n)),则 T1(n)+T2(n)=O(max(f(n), g(n)))
特别地,若T1(m)=O(f(m)), T2(n)=O(g(n)),则 T1(m)+T2(n)=O(f(m) + g(n))
(3)对于选择结构,如if语句,它的主要时间耗费是在执行then字句或else字句所用的时间,需注意的是检验条件也需要O(1)时间
(4)对于循环结构,循环语句的运行时间主要体现在多次迭代中执行循环体以及检验循环条件的时间耗费,一般可用大O下"乘法法则"
乘法法则: 是指若算法的2个部分时间复杂度分别为 T1(n)=O(f(n))和 T2(n)=O(g(n)),则 T1*T2=O(f(n)*g(n))
(5)对于复杂的算法,可以将它分成几个容易估算的部分,然后利用求和法则和乘法法则技术整个算法的时间复杂度

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

猜你喜欢

  • JS获取页面窗口实际大小函数

    2008-01-28 13:18:00
  • Anaconda下安装mysql-python的包实例

    2024-01-25 08:04:29
  • python中统计相同字符的个数方法实例

    2021-04-21 00:28:58
  • python处理大日志文件

    2021-11-09 22:21:14
  • 简单解析Django框架中的表单验证

    2023-09-07 04:51:05
  • vue如何截取字符串

    2024-04-30 10:21:15
  • Python下载ts文件视频且合并的操作方法

    2021-11-15 15:40:19
  • Python面向对象之内置函数相关知识总结

    2022-06-05 10:30:24
  • 使用python Django做网页

    2023-11-22 03:35:26
  • python实现简单通讯录管理系统

    2021-05-02 10:41:23
  • 交互因视觉设计而更完美

    2008-05-31 17:22:00
  • 10个ASP网页制作技巧

    2007-09-24 13:12:00
  • Spring Batch读取txt文件并写入数据库的方法教程

    2024-01-27 03:59:32
  • Anaconda下配置python+opencv+contribx的实例讲解

    2021-04-10 21:28:33
  • 为你的有序列表添加个性样式

    2009-02-23 13:12:00
  • MySQL实现JDBC详细步骤

    2024-01-28 13:39:11
  • php中常用的正则表达式的介绍及应用实例代码

    2024-05-03 15:35:24
  • JavaScript函数的调用以及参数传递

    2024-04-18 10:32:30
  • Python自动发邮件脚本

    2022-12-31 18:31:29
  • win2003 安装 sqlserver 2005的方法

    2024-01-21 23:46:22
  • asp之家 网络编程 m.aspxhome.com