У меня есть два алгоритма псевдо-код:время сложность некоторой рекурсивной и ни один рекурсивный алгоритм
RandomAlgorithm(modVec[0 to n − 1])
b = 0;
for i = 1 to n do
b = 2.b + modVec[n − i];
for i = 1 to b do
modVec[i mod n] = modVec[(i + 1) mod n];
return modVec;
Второе:
AnotherRecursiveAlgo(multiplyVec[1 to n])
if n ≤ 2 do
return multiplyVec[1] × multiplyVec[1];
return
multiplyVec[1] × multiplyVec[n] +
AnotherRecursiveAlgo(multiplyVec[1 to n/3]) +
AnotherRecursiveAlgo(multiplyVec[2n/3 to n]);
Мне нужно анализировать временную сложность этих алгоритмов: Для первый алгоритм i получил первый цикл в O (n), второй цикл имеет наилучший случай и худший случай, наилучшим случаем является то, что O (1) цикл выполняется один раз, в худшем случае мы имеем большой n на первый цикл, но я не знаю, как написать эту идею как причину сложности времени, которую я обычно получаю b = сумма (от 1 до n-1) 2^n-1. modVec [n-1] и я застрял здесь.
Для второго цикла я просто не понимаю, как решить временную сложность этого, мы обычно зависим от n, поэтому нам нужна формула, о которой я думаю.
Спасибо за помощь.
Что такое точка, например ** 2.b **? – Prune
Что вы имеете в виду, что вы «обычно получаете <плохо сформированное уравнение для b>»? Вы пробовали это по-разному, и вы получаете этот ответ большинством ваших методов? – Prune
. является умножением @Prune – whoisshe