算法复杂度是衡量算法效率的重要指标。了解算法的复杂度,有助于我们更好地选择合适的算法解决实际问题。

时间复杂度

时间复杂度是指算法执行时间与输入数据规模之间的关系。通常用大O符号表示,例如O(n)、O(n^2)等。

  • 线性时间复杂度 (O(n)): 算法执行时间与输入数据规模成正比。
  • 对数时间复杂度 (O(log n)): 算法执行时间与输入数据规模的对数成正比。
  • 平方时间复杂度 (O(n^2)): 算法执行时间与输入数据规模的平方成正比。

空间复杂度

空间复杂度是指算法执行过程中所需存储空间的大小。同样使用大O符号表示。

  • 常数空间复杂度 (O(1)): 算法执行过程中所需存储空间不随输入数据规模变化。
  • 线性空间复杂度 (O(n)): 算法执行过程中所需存储空间与输入数据规模成正比。

例子

以下是一个线性时间复杂度的例子:

def linear_search(arr, target):
    for i in range(len(arr)):
        if arr[i] == target:
            return i
    return -1

以下是一个对数时间复杂度的例子:

def binary_search(arr, target):
    left, right = 0, len(arr) - 1
    while left <= right:
        mid = (left + right) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

更多关于算法复杂度的内容,可以参考算法复杂度详解

Algorithms