Sei sulla pagina 1di 4

Analizați complexitatea pentru următoarele funcții:

1. def f1(l, v):


for i in range(l):
if l[i] == v:
return (i, v)
return "Did not find the item!"

2. Let n be the size of the list L passed to this function. Which of the following most
accurately describes how the runtime of this function grows as n grows?
def f2(L):
sum = 0
i = 1
while i < len(L):
sum = sum + L[i]
i = i * 2
return sum

(a) It grows linearly, like n does.

(b) It grows quadratically, like n2 does

(c) It grows less than linearly

(d) It grows more than quadratically.

3. def f1(n):
for i in range(1, n):
print(i)
print(3 + i)

4. def f2(n):
while n - 5 > 0:
print(n * 2 + 4)
n = n - 1
for i in range(1, 7):
print(i)

5. def f3(n):
for i in range(n):
for j in range(i):
print(i + j)

6. Care este complexitatea următorului algoritm?


def f4(n):
count = 0
i = n
while i >= 0:
for j in range(i):
count += 1;
i = i / 2
return count
(A) O(n^2)
(B) O(nLogn)
(C) O(n)
(D) O(nLognLogn)

7. def f5(n):
count = 0;
for i in range(math.sqrt(n)):
count += 1
for j in range(math.sqrt(n) / 4):
count += 1
for k in range(8 + j):
count += 1

8. def f6(n):
sum = 0;
for i in range(math.sqrt(n) / 2):
for j in range(i, 5 + i):
sum += 1

9. def f7(n):
sum = 0;
for i in range(math.sqrt(n) / 2):
for j in range(i, 5 + i):
for k in range(j, 3 + j):
sum += 1

10. def f6_1(n):


sum = 0;
for i in range(math.sqrt(n)):
for j in range(5 + i):
sum += 1

11. def f8(n):


sum = 0
for i in range(n):
for j in range(i ** 2):
if j % i == 0:
sum += 1
return sum

12. def f9(n):


sum = 0
for i in range(2 * n):
for j in range(i ** 2):
for k in range(j):
sum += 1
return sum

13. def sum(n):


if n == 1:
return 1
return n + sum(n - 1)
14. def computation1(n):
if n == 0:
return 1
elif n % 2 == 1:
return n + 3 * computation1(n - 1)
elif n % 2 == 0 and n > 0:
return 1 + 3 * n * computation1(n - 1)

15. def recursiveFun1(n):


if n <= 0:
return 1
else:
return 1 + recursiveFun1(n - 1)

16. def recursiveFun2(n):


if n <= 0:
return 1
else:
return 1 + recursiveFun2(n - 5)

17. def recursiveFun3(n):


if n <= 0:
return 1;
else:
return 1 + recursiveFun3(n / 5)

18. def recursiveFun4(n, m, p):


if n <= 0:
print(m, p)
else:
recursiveFun4(n - 1, m + 1, p);
recursiveFun4(n - 1, m, p + 1);

19. def recursiveFun5(n):


for i in range(1, n, 2):
print(i)

if n <= 0:
return 1;
else:
return 1 + recursiveFun5(n - 5)

20. def function1(n):


if n == 1:
return
for i in range(n):
for j in range(n):
print("Whee! We are analyzing complexity of algorithms.")
break
21. def function2(n):
count = 0
for i in range(n / 2, n):
j = 1
while j <= n:
k = 1
while k <= n:
count += 1
k = k * 2
j = j * 2
return count

22. def function3(n):


i = 1
s = 1
while s <= n:
i += 1
s += i
print("*")

23. def function4(n):

for i in range(n):
for j in range(i, i * i):
if j % i == 0:
for k in range(j * j):
print('*')

Potrebbero piacerti anche