07复杂度分析实战习题集
基础循环分析题(入门级)
题目1
分析以下代码的时间复杂度:
def function1(n):sum = 0for i in range(n):sum += ireturn sum
参考答案:
- 循环执行n次,每次执行常数时间操作
- 时间复杂度:O(n)
- 空间复杂度:O(1)(只使用了常数个变量)
题目2
分析以下代码的时间复杂度:
def function2(n):for i in range(5):print(i)for j in range(n):print(j)
参考答案:
- 第一个循环:固定执行5次,O(1)
- 第二个循环:执行n次,O(n)
- 根据相加规则:O(1) + O(n) = O(n)
题目3
分析以下代码的时间复杂度:
def function3(arr):n = len(arr)for i in range(n):if arr[i] == target:return ireturn -1
参考答案:
- 最坏情况下需要遍历整个数组
- 时间复杂度:O(n)
- 空间复杂度:O(1)
嵌套循环分析题(进阶级)
题目4
分析以下代码的时间复杂度:
def function4(n):for i in range(n):for j in range(n):print(i, j)
参考答案:
- 外循环执行n次
- 每次外循环,内循环执行n次
- 根据相乘规则:n × n = O(n2)O(n^2)O(n2)
题目5
分析以下代码的时间复杂度:
def function5(n):for i in range(n):for j in range(i):print(i, j)
参考答案:
- i=0时,内循环0次
- i=1时,内循环1次
- …
- i=n-1时,内循环n-1次
- 总次数:0+1+2+…+(n-1) = n(n-1)/2
- 时间复杂度:O(n²)
题目6
分析以下代码的时间复杂度:
def function6(n