[数据结构]《时间复杂度优化误区:单层 for 真的比双层更快吗?》
引言
你是否也曾以为:把两层 for 循环“压扁”成一层就能降低时间复杂度?本文通过两个典型代码示例,分析这一常见误区,并给出时间复杂度优化的正确思路:关注算法层面的复杂度降低,而非循环层数的数学等价变形。适合刚学习算法、希望正确理解性能优化的开发者阅读。
一、一个持续半年的误解
作者在学习计算机基础后,曾错误地认为:**时间复杂度只看循环嵌套的层数**,层数越少性能越好。于是试图将所有的双层 `for` 改写为单层 `for`,甚至认为用单层循环遍历矩阵能带来质的飞跃。
这个误解持续了半年,直到一次深入讨论才被真正解开。本文记录这一误区,并帮助有相同困惑的读者少走弯路。
二、误区再现:单层 for 遍历两个不等长数组
2.1 原始代码
假设有两个向量 `v1` 和 `v2`,需要按索引对齐输出它们的元素(较短的向量缺失部分补 0)。
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v1 = {1, 2, 3};
vector<int> v2 = {30, 45, 60, 75, 90};
int max_len = max(v1.size(), v2.size());
for (int i = 0; i < max_len; i++) {
int a = (i < v1.size())
