当前位置: 首页 > 科技观察

面试官:谈谈你对算法中时间复杂度和空间复杂度的理解?如何计算?

时间:2023-03-23 11:18:33 科技观察

1。前言算法是指用于操作数据和解决程序问题的一组方法。对于同一个问题,使用不同的算法可能会得到相同的结果,但过程中消耗的资源和时间会大不相同。不同算法的优劣主要通过“时间”和“空间”两个维度来考虑:时间维度:指执行当前算法所消耗的时间,通常用“时间复杂度”来描述。空间维度:指执行当前算法需要多少内存空间。我们通常用“空间复杂度”来描述时间和空间维度都无法考虑的情况。需要在两者之间取得平衡是我们需要考虑的算法。通常有三种情况:最佳、平均和最差。我们通常关注最坏的情况。最坏情况是算法运行时间的上限。对于某些算法,最坏情况发生的频率更高,这也意味着平均情况与最坏情况一样糟糕。算法的大小可以在很大程度上反映算法的优劣。算法花费的时间与算法中语句的“执行时间”成正比。执行次数越多,耗时越长算法的复杂度通常用大O表示法表示,定义为T(n)=O(f(n)),常见的时间复杂度有:O(1)常量型,O(logn)对数型、O(n)线性型、O(nlogn)线性对数型、O(n^2)平方型、O(n^3)立方型、O(n^k)k次方型,O(2^n)指数型,如下图所示:从上图可以看出,随着问题规模n的增大,上述时间复杂度增大,算法的执行效率下降。从小到大的顺序如下:Ο(1)