Если я следующий кодАнализ алгоритма время выполнения итеративного для петель
def func(A,n):
for i in A-1:
for k in A-1:
for l in A-1
if A[i]+A[k]+A[l] = 0:
return True
else:
return False
Как я проанализировать время выполнения этого алгоритма? Как я вижу, каждый цикл имеет 2 единицы, и каждый цикл работает n + 1 раз. цикл if затем запускает 3 * n раз, с 3 единицами. Тогда каждое возвращение будет одним, однако только из них будет работать, поэтому в итоге это будет примерно
T (n) = 2 (n + 1) +2 (n + 1) +2 (n + 1) +3 (n) +1 = 9n + 7
Является ли моя логика правильной или мне что-то не хватает. Также может ли время выполнения варьироваться от языка к языку?
Этот код имеет постоянное время выполнения, потому что в обеих ветвях вашего 'if' есть' return'. –
Но если бы вы «возвращали» вне цикла, время выполнения было бы O (N^3). – DyZ
Скажем, я изменяю второй для вершины петли k = i +1, а третий - l = k + 1. Будет ли время выполнения O (n) вместо O (n^3), так как алгоритм будет проверять, любые 3 последовательных числа, равные 0? – hanko