什么是二维循环遍历求和
二维循环遍历求和是编程中最基础的二维数据处理算法,主要用于对二维数组(矩阵/表格)中的所有元素进行累加计算。该算法通过嵌套循环结构依次访问并累加每个元素。
在计算机科学的发展历程中,这一算法随着二维数组数据结构的诞生而自然产生。从 1958 年 Fortran II 引入多维数组支持,到今天所有主流编程语言的原生支持,二维遍历求和始终是编程入门教育的必学内容。
二维数据的常见形式
编程中的表示
| 类型 | 表示 | 维度 | 含义 |
|---|---|---|---|
| 一维数组 | [1, 2, 3] | 1×3 | 1行3列 |
| 二维数组 | [[1,2],[3,4],[5,6]] | 3×2 | 3行2列 |
| 方阵 | [[1,2,3],[4,5,6],[7,8,9]] | 3×3 | 行数=列数 |
| 稀疏矩阵 | 大部分元素为 0 | 任意 | 可优化存储 |
历史发展脉络
二维循环遍历求和虽然没有特定的发明人,但它的发展与计算机科学的重要里程碑紧密相连:
- 1950 年代 — Fortran 作为首个支持二维数组的高级语言,奠定了基础
- 1960-70 年代 — ALGOL、Pascal 规范了循环语法,嵌套循环成为标准范式
- 1980 年代至今 — C/C++、Java、Python、JavaScript、C# 等所有主流语言均原生支持
核心概念图解
理解二维循环遍历求和,需要掌握三个核心概念:嵌套循环、累加器和完整遍历。三者协同工作,确保二维数据中的每一个元素都被精确访问和累加。
二维数组结构
嵌套循环结构
核心要点
外层循环控制行访问(循环次数 = 行数),内层循环控制列访问(循环次数 = 列数)。访问顺序为:从上到下逐行,每行从左到右。这种遍历方式称为行优先遍历(Row-Major Order)。
三大核心概念详解
算法原理与数学基础
二维数组求和的核心思想是通过全覆盖遍历和顺序累加来实现。需要依次访问数组中的每个元素,并将它们的数值逐步累加。
数学公式
这个双重求和公式清晰地描述了对数组中所有元素进行遍历和累加的过程。外层求和符号 Σ 遍历所有行(i 从 0 到 m-1),内层求和符号遍历每行的所有列(j 从 0 到 n-1)。
数学特性
重要性质
交换律:加法的顺序不影响结果。行优先遍历和列优先遍历得到相同的总和。
结合律:可以先对每行分别求和再相加,也可以逐个元素累加,结果一致。
分配律延伸:矩阵所有元素之和 = 各行之和 = 各列之和 = 全部元素直接累加。
算法伪代码
function Sum2DArray(array, rows, cols): sum <- 0 // 步骤1: 初始化累加器 for i <- 0 to rows-1: // 步骤2: 外层循环遍历行 for j <- 0 to cols-1: // 步骤3: 内层循环遍历列 sum <- sum + array[i][j] // 步骤4: 累加当前元素 return sum // 步骤5: 返回结果执行流程逐步图解
以 3×2 二维数组 [[1,2],[3,4],[5,6]] 为例,逐步演示完整的求和过程。外层循环 i 从 0 到 2,内层循环 j 从 0 到 1,共执行 3×2=6 次累加。
数学验证
加法满足交换律和结合律,遍历顺序不影响最终结果。
行求和:(1+2) + (3+4) + (5+6) = 3 + 7 + 11 = 21
列求和:(1+3+5) + (2+4+6) = 9 + 12 = 21
对角线:此例为非方阵,无主对角线。3×3 方阵对角线求和 = 1+5+9 = 15。
循环变量变化表
| 步骤 | i (行) | j (列) |
|---|