复杂度是评估算法效率的重要指标之一。在Python中,我们需要了解算法的时间复杂度和空间复杂度。
时间复杂度
时间复杂度是指算法运行时间与输入规模的关系。通常使用大O符号表示。例如,若算法的时间复杂度为O(n),则随着输入规模n的增大,算法的执行时间会线性增加。
空间复杂度
空间复杂度是指算法执行过程中所需要的存储空间和输入数据规模的关系。通常使用大O符号表示。例如,若算法的空间复杂度为O(1),则无论输入规模大小,所需要的存储空间是恒定的。
时间复杂度示例代码
def foo(a): n = len(a) for i in range(n): # O(n) for j in range(i+1, n): # O(n^2) if a[i] >a[j]: a[i], a[j] = a[j], a[i] return a # O(n^2)
上述代码的时间复杂度为O(n^2),因为使用了两层循环,而每层循环的次数都与n相关。
空间复杂度示例代码
def bar(n): s = [0] * n # O(n) return s # O(n)
上述代码的空间复杂度为O(n),因为创建了一个长度为n的列表。