Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 算法的时间复杂度-n还是n*n?_Algorithm_Time Complexity - Fatal编程技术网

Algorithm 算法的时间复杂度-n还是n*n?

Algorithm 算法的时间复杂度-n还是n*n?,algorithm,time-complexity,Algorithm,Time Complexity,我试图找出这个算法的θ复杂度。 (a是整数列表) 一方面,我可以说附录< /代码>正在执行 n< /代码>(数组的长度),所以代码> POP,最后我要考虑的是代码> 条件,最多可以执行 2N次。p> 由此我可以说这个算法最多是4*n,所以它是θ(n) 但这不是摊销分析吗 另一方面,我可以这样说: 有两个嵌套循环。for循环正被执行n次。while循环最多可以执行n次,因为我必须在每次迭代中删除项。所以复杂性是θ(n*n) 我想计算θ,但不知道这两个选项中哪一个是正确的。你能给我一些建议吗?答案是

我试图找出这个算法的θ复杂度。 (a是整数列表)

一方面,我可以说<代码>附录< /代码>正在执行<代码> n< /代码>(数组的长度),所以<>代码> POP,最后我要考虑的是<>代码> 条件,最多可以执行<代码> 2N次。p> 由此我可以说这个算法最多是

4*n
,所以它是θ(n)

但这不是摊销分析吗

另一方面,我可以这样说:

有两个嵌套循环。
for
循环正被执行
n次。
while
循环最多可以执行
n次
,因为我必须在每次迭代中删除项。所以复杂性是θ(n*n)

我想计算θ,但不知道这两个选项中哪一个是正确的。你能给我一些建议吗?

答案是
THETA(n)
,你的论点是正确的

这不是摊销分析

要进行摊销分析,您必须查看内部循环。如果忽略算法的其余部分,则很难说出while的执行速度。天真的方法是O(N),这是正确的,因为这是最大的迭代次数。然而,因为我们知道执行的总数是O(N)(你的论点),并且这将被执行N次,我们可以说内部循环的复杂性是O(1)摊销。

θ是(N),不在摊销分析中;我现在还没有正式的证据,但稍后我会提出一个。很酷的问题,顺便说一句。
def sttr(a):
    for i in xrange(0,len(a)):
        while s!=[] and a[i]>=a[s[-1]]:
            s.pop()
        s.append(i)
    return s