1单选(2分)
判断下列代码段的大O级别:
test = 0
for i in range(n):
for j in range(n):
test = test + i * j
A. O(n^2)
B. O(n^3)
C. O(n)
D. O(n*log(n))
正确答案:A
2单选(2分)
判断下列代码段的大O级别:
test = 0
for i in range(n):
test = test + 1
for j in range(n):
test = test - 1
A. O(n^3)
B. O(n^2)
C. O(n*log(n))
D. O(n)
正确答案:D
3单选(2分)
判断下列代码段的大O级别:
for i in range(n):
k = 2 + 2
A. O(n^3)
B. O(n^2)
C. O(n)
D. O(1)
正确答案:C
4单选(2分)
判断下列代码段的大O级别:
def function(n):
return n+2
A. O(n)
B. O(1)
C. O(n^2)
D. O(n^3)
正确答案:B
5单选(2分)
以下是一个快速幂算法:
def pow(x, n):
if n==0:
return 1
elif n==1:
return x
elif n%2==0:
return pow(x*x, n//2)
else:
return pow(x*x, n//2)*x
问它对于n的大O级别。
A. O(n)
B. O(log n)
C. O(nlog n)
D. O(1)
正确答案:B
6多选(3分)
下面的列表操作中哪些是O(1)的?
A. list[10]
B. list.append(10)
C. list.pop()
D. list.pop(0)
正确答案:A、B、C
7多选(3分)
下面的字典操作中哪些是O(1)的?
A. del my_dict[’’]
B. ‘’ in my_dict
C. my_dict[’’] += 1
D. my_dict[’’] == 10
正确答案:A、B、C、D
8多选(3分)
令n为问题规模,其中解决本问题的三个算法称为A,B,C,他们需要的总运算次数分别是:
A: 96+108n+24n2+12n3
B: 16n+48n^3
C: 10080+168n+7n^2*log(n)
三个算法的时间复杂度的大O级别中,以下表述正确的有:
得分/总分
A. C算法的时间复杂度最小
B. B算法比A算法的时间复杂度更大
C. A算法比B算法的时间复杂度更大
D. A算法和B算法的时间复杂度相同
正确答案:A、D