使用 Big-O 渐近分析计算总 运行 时间
Total running time calculation using Big-O Asymptotic analysis
int f1(int n)
{
int sum = 73;
for (int i=0; i < n; i++)
{
for (int j=i; j >= 5; j/2)
{
sum--;
}
}
}
我正在计算此算法的总 运行 时间,以确定每条语句的成本。
我到目前为止是这样的:
for(int i=0; i < n; i++) // runs in n time
for(int j=i; j >= 5; j/2) // runs in T(n/2) time
sum-- // runs nc/2 times (because it lies in inner loop which is running n/2 times)
现在,我必须找到 T(n) 但我不知道是要执行此 n*T(n/2)) 还是 n+ T(n/2) .
当 T(n/2) 通过它给出的替换求解时,O(log n) 将是该算法 O(n^2) 或 O(n log n)?
我认为 Big-O 将是 O(n*Log2(n))
for(int i = 0; i < n; ++i) // n
for(int j = i; j >= 5; j /= 2) //log2(n) Because j is divided by 2 each step
sum--; // 1
int f1(int n)
{
int sum = 73;
for (int i=0; i < n; i++)
{
for (int j=i; j >= 5; j/2)
{
sum--;
}
}
}
我正在计算此算法的总 运行 时间,以确定每条语句的成本。 我到目前为止是这样的:
for(int i=0; i < n; i++) // runs in n time
for(int j=i; j >= 5; j/2) // runs in T(n/2) time
sum-- // runs nc/2 times (because it lies in inner loop which is running n/2 times)
现在,我必须找到 T(n) 但我不知道是要执行此 n*T(n/2)) 还是 n+ T(n/2) . 当 T(n/2) 通过它给出的替换求解时,O(log n) 将是该算法 O(n^2) 或 O(n log n)?
我认为 Big-O 将是 O(n*Log2(n))
for(int i = 0; i < n; ++i) // n
for(int j = i; j >= 5; j /= 2) //log2(n) Because j is divided by 2 each step
sum--; // 1