查看“︁二维数组”︁的源代码
←
二维数组
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{noteTA |T=zh-hans:二维数组; zh-hant:二維陣列; |1=zh-hans:数组; zh-hant:陣列; }} '''二维[[数组]]'''<math>A_{[m][n]}</math>,每个元素的长度为t个[[字节]],设<math>a_{p,q}</math>为A的第一个元素,即二维数组的行下标从p到m,列下标从q到n,按“行优先顺序”存储时则元素<math>a_{ij}</math>的地址计算为: <math>LOC(a_{i,j}) = LOC(a_{p,q}) + ( (i-p) * n + (j-q) ) * t</math> 按“列优先顺序”存储时,地址计算为: <math>LOC(a_{i,j}) = LOC(a_{p,q}) + ( (j-q) * m + (i-p) ) * t</math> 存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节 二维数组又称为'''矩阵''',行列数相等的矩阵称为'''方阵'''。对称矩阵<math>a_{ij}=a_{ji}</math>,对角矩阵:n阶方阵的所有非零元素都集中在主对角线上. ==二维数组基本运算算法:== === (1)转置矩阵:=== <syntaxhighlight lang="c" style="overflow:hidden" line="1"> // 其中A, B是m*n矩阵 void tramat(matrix A, matrix B) { //T(n) = O(m * n) int i, j; for (i = 0; i < m; i++) for (j = 0; j < n; j++) B[j][i] = A[i][j]; } </syntaxhighlight> === (2)矩阵相加:=== <syntaxhighlight lang="c" style="overflow:hidden" line="1"> // 其中A,B,C是m*n矩阵 void addmat(matrix C, matrix A, matrix B) { int i, j; for (i = 0; i < m; i++) for (j = 0; j < n; j++) C[i][j] = A[i][j] + B[i][j]; } </syntaxhighlight> === (3)矩阵相乘:=== <syntaxhighlight lang="c" style="overflow:hidden" line="1"> // 其中A是m*r矩阵,B是r*n矩阵,C为m*n矩阵 void mutmat(matrix C, matrix A, matrix B) { int i, j, k; for (i = 0; i < m; i++) for (j = 0; j < n; j++) { C[i][j] = 0; for (k = 0; k < r; k++) C[i][j] += A[i][k] * B[k][j]; } } </syntaxhighlight> ==参见== *[[矩阵]] *[[稀疏矩阵]] [[category:数据结构|E]]
该页面使用的模板:
Template:NoteTA
(
查看源代码
)
返回
二维数组
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息