-1
我目前正在做一些关于大O和T(N)的作业,并且遇到过几个问题。我插入了像教授所说的数字,并提出每个循环运行多少次,但我无法弄清楚如何从这些信息中推导出T(n)和Big O.我看过整个网站,但似乎无法找到任何帮助。这些是一些未分配的问题,但与我正在努力解决的问题非常相似。大O和T(N)混淆
如果你可以一步一步地找出如何去寻找Big O和T(n),那会非常有帮助。谢谢你的时间。
for (int i = 0; i < n; i++)
for (int j = 0; j < i * i; j++)
cout << j << endl;
i=1 runs 1 time
i=2 runs 4 times
i=3 runs 9 times
i=4 runs 16 times
for (int i = n; i >= 0; i -= 2)
cout << i << endl;
n=10 runs 6 times
n=8 runs 5 times
n=6 runs 4 times
n=4 runs 3 times
n=2 runs 2 times
for (int i = 0; i < n; i++)
for (int j = i; j > 0; j /= 2)
cout << j << endl;
i=16 runs 5 times
i=8 runs 4 times
i=4 runs 3 times
i=2 runs 2 times
你是指'Theta(n)'? – Barmar
@Barmar很可能不是。 'T(n)'表示对大小为'n'的问题执行算法的时间。这是一个经常用来描述递归算法的符号。例如。 'T(n)= 2 * T(n/2)+ c'意味着你可以通过将问题分解成一半大小加上一些恒定时间的两个问题来解决问题,例如计算中间值或某物。它用于获得算法的“O”。 https://en.wikipedia.org/wiki/Master_theorem – luk32