C++ 嵌套循环的T(n)
有人能帮我找到T(n)吗?对于以下循环,内部循环作为n的函数运行的次数:C++ 嵌套循环的T(n),c++,algorithm,math,time-complexity,big-o,C++,Algorithm,Math,Time Complexity,Big O,有人能帮我找到T(n)吗?对于以下循环,内部循环作为n的函数运行的次数: for (int i = 0; i < n; i++) for (int j = i; j > 0; j /= 2) cout << j << endl; 我已经尝试使用对数乘积规则来简化它 T(n)=log_2((n-1)!2^2)) 但这并不满足方程式 *为了解释我所说的T(n)T(n),我想你指的是一个函数,用于计算输入大小n的“基本操作”的数量。首先
for (int i = 0; i < n; i++)
for (int j = i; j > 0; j /= 2)
cout << j << endl;
我已经尝试使用对数乘积规则来简化它
T(n)=log_2((n-1)!2^2))
但这并不满足方程式
*为了解释我所说的
T(n)
T(n)
,我想你指的是一个函数,用于计算输入大小n
的“基本操作”的数量。首先,你必须选择一个“基本操作”。在这种情况下,cout“T(n)”是什么意思?这不是像Big-O表示法那样的标准术语。您是否正在尝试查找循环运行的确切次数?最坏的情况?T(n)对我来说也没什么意义,所以请解释一下。假设你知道什么是T(n)
。如果n
增加1,您还需要做多少工作?嗯,你必须再做一次内循环。通过每次减半,内部循环从i
(大致为n
)变为0。所以你得到类似于T(n)=T(n-1)+log_2(n)
。
T(n)=log_2((n-1)!2^2))
for (int i = 0; i < n; i++)
cout << i << endl;
for (int i = n; i > 0; i--)
cout << i << endl;
for (int i = n; i > 0; i /= 2)
cout << i << endl;
for (int i = 0; i < n; i *= 2)
cout << i << endl;
for (int i = 0; i < n/2; i++)
cout << i << endl;
T(n) = sum(i=0, n, sum(j=i, n/2 - 1, 1))