首页 > 编程知识 正文

对应算法的时间复杂度怎么算,复杂度为logn的算法

时间:2023-05-06 13:22:17 阅读:157513 作者:3432

关于时间的复杂性,有t(n )=) ) f ) n ) )的公式。

为了便于比较同一个问题的不同算法,通常从该算法中提取一个或多个代表性的基本操作,其基本操作被重复的次数与问题规模之间的关系t(n )是算法的时间度量。

t(n )和f ) n )是n的函数时,当n 时,有t(n )/f ) n ) c )常数c 0 ),表示为t(n )=o ) f(n ) ),称为o ) n )

算法的空间复杂性:

一个算法的实现所占用的存储空间大致包括三个方面。

1 .指令、常数和变量占用的存储空间

2 .输入数据占用的存储空间

3 .执行算法所需的辅助空间

前两个是必需的,通常以运行算法所需的辅助空间作为分析算法空间复杂度的依据。 s(n )=o ) f ) ) n )。 其中f ) n )的规则与时间复杂度一致。

所以,我们先来看看o(1)是什么意思。 算法的时间复杂性:

1.o(1) )。

o(1)即最低时间复杂度。 表示常数值。 这意味着它很费时间,而且与输入数据的大小无关,都会消耗空间。 无论输入数据增加多少倍,花费的时间都不会改变。

相关算法的示例:散列算法(不考虑冲突情况) (o ),无论数据量如何。

2 .是2.o(n )

o(n )理解也很简单,算法的时间复杂度是数据量的数倍,时间也是数倍。

常见算法示例:遍历算法。

3.o(n^2) )。

数据量为n倍时,时间为n的平方倍,表示时间的复杂度高于线性。 例如,气泡排序是典型的O(N^2)算法,要对n的个数进行排序,需要扫描n n次。

也有人用O(N )2)表示。 这两个表示是一样的。

4.o(logn ) )。

如果数据变成n倍,时间就会变成logn倍。 此处的log以2为底,例如,如果数据增加256倍,则时间增加8倍,时间复杂度低于线性。 二分搜索是一种o(logn )算法,每搜索一次就排除一半的可能性,在256个数据中搜索8次即可找到目标。

5.o(nlogn ) )。

o(nlogn )是指n乘以logn,当数据变为256倍时,时间变为256*8=2048倍。 这个复杂度比线性低于平方。 合并是o(nlogn )的时间复杂度。

常见的时间复杂度为常数阶o(1),对数阶o(log2n ),线性阶o ) n ),线性对数阶o ) nlog2n ),平方阶o ) n2 ),k次方阶o ) NK ),指数阶o ) 2n )等等。 不一一列举说明。

根据经验,我们应该尽量选择多项式阶o(NK )的算法,而不想使用指数阶的算法。

常见算法的时间复杂度从小到大依次为:(1) )(log2n ) ) (nlog2n ) ) ) nlog2n ) ) n3 )…)) 2n ) ) n! 请参阅。

上图是典型算法的时间复杂度示例。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。