首页 > 编程知识 正文

算法时间复杂度分析例题,算法时间复杂度分析的基本方法

时间:2023-05-05 23:26:35 阅读:228605 作者:3404

复杂度分析简介

到底什么是大O??

n表示数据规模,O(f(n))表示运行算法所需要执行的指令数,和f(n)成正比。

比如下面的例子,注意常数项不计入复杂度

常数项对算法效率的影响?

当数据规模小的时候,常数项可能会影响到算法执行效率,所以可以考虑复杂度比较差的算法,但是当规模比较大时,我们就必须追求好的时间复杂度

 

复杂度计算?

时间复杂度如果由两部分组成,选取大的那部分

但是要注意两部分的n是否相同,n不同时间复杂度由两部分组成:

数据规模

复杂度:O(n)

数据规模每上升10倍,时间增加十倍

 

保险起见,这个数量级可以除以10

所以,在面试过程中,1s内,面试官告诉你数据规模在10^8,那么就要设计一个0(n)或复杂度更低的算法。如果是10^4,那么O(n^2)就可以了。如果是 100,那么设计一个O(n^3)也是可以的。

根据数据规模的不同和所要求的时间,估计出自己大概需要设计怎样复杂度的算法来实现要求。

空间复杂度

递归调用是有空间代价的。在程序运行时,当递归调用时,会将递归之间的函数压入栈中,占据了一定的空间

因为递归深度是n,所以空间复杂度是O(n)

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