走进数据结构---时间复杂度

本文深入探讨了时间复杂度的概念,介绍了如何计算和分析算法的时间复杂度,包括常数级、对数级、线性级、线性对数级、平方级等常见时间复杂度,并通过实例详细解释了各个复杂度级别的含义和计算方法,帮助读者更好地理解和评估算法效率。
摘要由CSDN通过智能技术生成

一、时间复杂度介绍

1、时间复杂度定义

在进行算法分析,语句总得执行次数 T(n) 是关于问题规模 n 的函数,进而分析 T(n) 随 n 的变化情况并确定 T(n) 数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n) = O(f(n)),它表示随问题规模 n 的增大算法执行时间的增长率和 f(n) 的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度,其中f(n) 是问题规模 n 的某个函数。

2、求解时间复杂度具体步骤

(1)找出算法中的基本语句

算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。

(2)计算基本语句的执行次数的数量级

只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可。可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。

(3)用大 O 记号表示算法的时间性能

将基本语句执行次数的数量级放入大 O 记号中。

大 O 中的 O 的意思就是"order of"(大约是),它是种概念,就比如 大型车、小型车和中型车,忽略具体大小尺寸,来描述汽车。

3、时间复杂度计算方法

(1)用常数 1 取代运行时间中的所有加法常数。

(2)在修改后的运行次数函数中,只保留最高阶项

(3)如果最高阶存在且不是 1,则去除与这个项相乘的常数。最后,得到的最后结果就是时间复杂度。

简单来说,就是保留求出次数的最高次幂,并且把系数去掉,如 T(n) = 2n^2+n+1 = O(n^2)

4、常见的时间复杂度

(1)常数级复杂度:O(1)

(2)对数级复杂度:O(logN)

(3)线性级复杂度:O(N)

(4)线性对数级复杂度:O(NlogN)

(5)平方级复杂度:O(N^2)

难懂数据结构和算法结束——走进时间复杂度

复杂度曲线越平越好,越陡越差,常数级复杂度最为理想。

常用的时间复杂度所耗费的时间从小到大依次是:

O(1) < O(logn) < (n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

举例说明:

难懂数据结构和算法结束——走进时间复杂度

二、具体说明各种时间复杂度

按照时间复杂度从小到大依次讲解:

讲解之前需要了解一个概念:频度

参看:数据结构频度

在数据结构中,频度是指一个定义变量在它的函数中,并且是它在执行到该段语句为止时,这个定义变量在函数总共执行基本操作的次数。

例如下函数中各行频度n的计算:

for(i=0;i<n;i++) ----------------------------- (1)

{

for(j=0;j<n;j+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值