时间复杂度是用来衡量一个算法执行时间随输入数据规模增长而变化的趋势的指标。它不告诉你具体的秒数而是告诉你“增长的速度有多快”。核心思想关注趋势而非具体时间假设你要处理一个包含n个元素的列表算法 A 可能需要n步算法 B 可能需要n²步当n很小比如10时差别不大。但当n很大比如100万时n²步会比n步慢无数倍。时间复杂度就是用来描述这种“增长规律”的数学工具。大 O 表示法我们通常用大 O 表示法来描述时间复杂度比如O(1)- 常数时间O(log n)- 对数时间O(n)- 线性时间O(n log n)- 线性对数时间O(n²)- 平方时间O(2ⁿ)- 指数时间直观理解从最好到最差时间复杂度俗称n1000时的感觉例子O(1)常数时间瞬间完成数组按索引访问O(log n)对数时间几乎瞬间二分查找O(n)线性时间比例增长遍历数组O(n log n)线性对数稍慢但能接受快速排序O(n²)平方时间开始变慢双重嵌套循环O(2ⁿ)指数时间天文数字般慢穷举所有组合具体例子1. O(1) - 常数时间def get_first_element(arr): return arr[0] # 无论数组多大都只做一步2. O(n) - 线性时间def find_max(arr): max_val arr[0] for num in arr: # 遍历所有 n 个元素 if num max_val: max_val num return max_val # 需要 n 步3. O(n²) - 平方时间def find_duplicates(arr): duplicates [] for i in range(len(arr)): # 外层循环 n 次 for j in range(i 1, len(arr)): # 内层循环平均 n/2 次 if arr[i] arr[j]: duplicates.append(arr[i]) return duplicates # 总共约 n²/2 步为什么它很重要可扩展性预测帮你预测当数据量增加10倍时程序会慢多少算法选择在设计和面试中选择更高效的算法问题分类判断一个问题是否“可高效解决”实际意义对比O(n)算法数据量×10 → 时间×10O(n²)算法数据量×10 → 时间×100O(2ⁿ)算法数据量10 → 时间×1024倍计算时的简化原则计算时间复杂度时我们忽略常数和低阶项只保留最高阶项3n² 100n 500→ 记为O(n²)5n 20→ 记为O(n)log₂n 10→ 记为O(log n)因为当n很大时n²项占主导地位其他项的影响微不足道。总结时间复杂度就是算法执行时间的“增长速率标尺”它告诉你数据量翻倍时时间大概会变成几倍它不告诉你具体需要多少毫秒它关注的是大规模数据下的性能趋势简单说它是评估算法“好不好”的一个关键数学指标能帮助我们在写代码时做出更明智的选择。