Big O 时间复杂度入门:算法效率一文搞懂

Big O 时间复杂度入门:算法效率一文搞懂

数据结构与算法 2026-06-24 10 分钟

Big O 时间复杂度入门:算法效率一文搞懂

时间复杂度是衡量算法效率的标准。本文介绍 Big O 表示法。

什么是 Big O?

Big O 表示算法随输入规模增长的时间增长趋势。

常见时间复杂度

复杂度 名称 示例
O(1) 常数 数组访问
O(log n) 对数 二分查找
O(n) 线性 遍历数组
O(n log n) 线性对数 归并排序
O(n²) 平方 冒泡排序
O(2^n) 指数 递归斐波那契
O(n!) 阶乘 全排列

示例分析

O(1) - 常数时间

int getFirst(int[] arr) {
    return arr[0]; // 无论数组多大,都是1步
}

O(n) - 线性时间

int find(int[] arr, int target) {
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == target) return i;
    }
    return -1;
}

O(n²) - 平方时间

void bubbleSort(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr.length - 1; j++) {
            if (arr[j] > arr[j + 1]) swap(arr, j, j + 1);
        }
    }
}

O(log n) - 对数时间

int binarySearch(int[] arr, int target) {
    int left = 0, right = arr.length - 1;
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (arr[mid] == target) return mid;
        if (arr[mid] < target) left = mid + 1;
        else right = mid - 1;
    }
    return -1;
}

空间复杂度

复杂度 示例
O(1) 原地排序
O(n) 创建新数组
O(n²) 二维数组

总结

理解时间复杂度是算法学习的基础。选择合适的算法,可以大幅提升程序性能。

📚 相关文章