Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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 大欧米茄分析_Algorithm_Analysis_Big O - Fatal编程技术网

Algorithm 大欧米茄分析

Algorithm 大欧米茄分析,algorithm,analysis,big-o,Algorithm,Analysis,Big O,我一直在努力了解这一系统的最佳运行时间: for t = 1 to n sum = 0 for i = 1 to t sum = sum + x[i] 我知道第一个循环将进行n次。这是我挣扎的内环。 第一次内环将变为n(n+1)/2,但下一次将变为n(n+1)/2-1。 我不知道如何将此转换为最佳运行时间 如果可能的话,我可以往正确的方向推。 谢谢大家! 您在尝试分析O(n)时增加了一点复杂性。这可能就是你感到困惑的原因 我们知道从1到t的外环是线性的。随着时

我一直在努力了解这一系统的最佳运行时间:

for t = 1 to n
    sum = 0

    for i = 1 to t
        sum = sum + x[i]
我知道第一个循环将进行n次。这是我挣扎的内环。 第一次内环将变为n(n+1)/2,但下一次将变为n(n+1)/2-1。 我不知道如何将此转换为最佳运行时间

如果可能的话,我可以往正确的方向推。
谢谢大家!

您在尝试分析O(n)时增加了一点复杂性。这可能就是你感到困惑的原因

我们知道从1到t的外环是线性的。随着时间的推移,内部循环运行得更多。在t=1时,它运行一次,在t=n时,它运行n次

我们运行for循环的平均次数是多少

avg=(1+n)/2

这是您找到的值,尽管您试图对其进行迭代。我们所需要的只是计算的平均值

因为对于n的高值,1对n相对不重要,所以我们可以将其近似为
n/2

因此,外部循环运行n次。内部循环运行n/2次

n*n/2=0.5n^2


由于我们通常忽略大多数乘法值,我们可以说,
O(n)=n^2

为了可视化这一点,我采取的方法是在更复杂的情况下想象一个充满正方形的区域或一个充满骰子的体积。每个正方形代表一个原子步。外部循环迭代的所有步骤都放在同一行上。对于您的情况,它看起来是这样的:

t=1 #
t=2 ##
t=3 ###
t=4 ####
t=5 #####
如你所见,这些形成一个三角形,谁的高度是N,谁的宽度也是N。如果你现在计算正方形(N*(N+1)/2),你就得到了内循环的迭代次数。相乘并删除不相关的术语会给你带来复杂性(N*N)。

请详细说明-
t
这里是什么(t的值)?另外,我想你需要更严格的分析!