news 2026/7/26 9:39:38

彻底搞懂二维数组遍历求和(图解+代码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
彻底搞懂二维数组遍历求和(图解+代码)

什么是二维循环遍历求和


二维循环遍历求和是编程中最基础的二维数据处理算法,主要用于对二维数组(矩阵/表格)中的所有元素进行累加计算。该算法通过嵌套循环结构依次访问并累加每个元素。

在计算机科学的发展历程中,这一算法随着二维数组数据结构的诞生而自然产生。从 1958 年 Fortran II 引入多维数组支持,到今天所有主流编程语言的原生支持,二维遍历求和始终是编程入门教育的必学内容。

二维数据的常见形式

编程中的表示

类型表示维度含义
一维数组[1, 2, 3]1×31行3列
二维数组[[1,2],[3,4],[5,6]]3×23行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# 等所有主流语言均原生支持

核心概念图解


理解二维循环遍历求和,需要掌握三个核心概念:嵌套循环、累加器完整遍历。三者协同工作,确保二维数据中的每一个元素都被精确访问和累加。

二维数组结构

图1(动态):二维数组行优先遍历扫描动画 — 逐步高亮每个单元格并实时累加

嵌套循环结构

图2(动态):嵌套循环结构动画 — 外层循环遍历行,内层循环遍历列,形成"行优先"扫描模式

核心要点

外层循环控制行访问(循环次数 = 行数),内层循环控制列访问(循环次数 = 列数)。访问顺序为:从上到下逐行,每行从左到右。这种遍历方式称为行优先遍历(Row-Major Order)。

三大核心概念详解

算法原理与数学基础


二维数组求和的核心思想是通过全覆盖遍历顺序累加来实现。需要依次访问数组中的每个元素,并将它们的数值逐步累加。

数学公式

这个双重求和公式清晰地描述了对数组中所有元素进行遍历和累加的过程。外层求和符号 Σ 遍历所有行(i 从 0 到 m-1),内层求和符号遍历每行的所有列(j 从 0 到 n-1)。

数学特性

重要性质

交换律:加法的顺序不影响结果。行优先遍历和列优先遍历得到相同的总和。

结合律:可以先对每行分别求和再相加,也可以逐个元素累加,结果一致。

分配律延伸:矩阵所有元素之和 = 各行之和 = 各列之和 = 全部元素直接累加。

图3:二维循环遍历求和算法流程图 — 从初始化到返回结果的完整执行路径

算法伪代码

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 次累加。

图4(动态):逐步执行追踪表格动画 — 6 步访问覆盖全部元素,最终累加器值为 21

数学验证

加法满足交换律和结合律,遍历顺序不影响最终结果。

行求和:(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 (列)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/26 9:38:42

Navicat Premium 17 免费安装教程

Navicat Premium 17 是一款强大的数据库管理工具&#xff0c;支持 MySQL、PostgreSQL、SQL Server、Oracle、MongoDB 等多种数据库。本教程将带你从官方下载、安装、配置到合法激活&#xff0c;安全合规&#xff0c;适合开发者、运维、学生等人群。 一、下载 Navicat Premium…

作者头像 李华
网站建设 2026/7/26 9:34:20

Django毕设选题推荐:大数据岗位匹配的应届生求职服务系统设计 智能化应届生就业推荐与管理系统实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/26 9:33:39

代理标识开发_agent-identifier

以下为本文档的中文说明该技能为Claude Code插件中的代理开发提供全面指导&#xff0c;涵盖代理结构设计、触发条件配置、系统提示词编写等关键方面。主要功能是帮助开发者创建自主化的子代理&#xff0c;使其能够独立处理复杂的多步骤任务。使用场景包括&#xff1a;当用户需要…

作者头像 李华
网站建设 2026/7/26 9:33:37

联邦学习测试:开发者必备的隐私保护技术

1. 联邦学习测试为何成为开发者必修课2026年的技术圈正在见证一场测试范式的革命。当我在某跨国医疗项目首次接触联邦学习测试时&#xff0c;系统在保护患者隐私的同时实现了跨机构模型优化&#xff0c;这种"数据不动模型动"的测试方式彻底颠覆了我对传统测试的认知。…

作者头像 李华
网站建设 2026/7/26 9:32:37

UART进阶应用:地址匹配、硬件流控与红外通信详解

1. 项目概述&#xff1a;深入UART的进阶功能在嵌入式开发领域&#xff0c;UART&#xff08;通用异步收发传输器&#xff09;几乎是每个工程师的“老朋友”。我们用它来打印调试信息、连接传感器、与上位机通信&#xff0c;其基础操作——配置波特率、数据位、停止位——早已是肌…

作者头像 李华
网站建设 2026/7/26 9:31:47

Metamorphic Testing of Large Language Models for Natural Language Processing

文章主要内容与创新点总结 一、主要内容 本文聚焦大型语言模型(LLMs)在自然语言处理(NLP)任务中的变质测试(Metamorphic Testing, MT)研究,核心是解决LLM自动化测试中的“预言机问题”(即缺乏标注数据时难以判断输出正确性)。 研究背景:LLMs在NLP任务中应用广泛,但…

作者头像 李华