数组、系数矩阵相关计算

数组

数组分为一维数组和二维数组,数组部分牵扯存储地址的计算。

一维数组

a[n];

n表示数组长度;

a[i]表示数组中编号为i的元素,实际上是第(i+1)个元素,因为数组序号从0开始;

第1个元素a[0]的存储地址是a的地址;

已知单个元素长度是len;

存储地址计算

元素 a[i] 的存储地址计算公式为:a[i] 地址 = a+i*len;

公式可以理解为:

二维数组

a[m][n];

二维数组可以看作是一张表;

m表示二维数组行,n表示二维数组列;

a[0][1]表示数组a的第0行第1列,a[1][0]表示数组a的第1行第0列;

二维数组分为按行存储和按列存储;

已知单个元素长度是len;

按行存储存储地址计算

m表示二维数组总行数;

元素 a[i][j] 按行存储地址计算公式为:a+(i*n+j)*len;

例题

已知5行5列的二维数组a中的各元素占两个字节,求元素a[2][3]按行优先存储的存储地址

a[2][3]按行优先存储的存储地址是:a+(2*5+3)*2=a+26。

可以理解为:

 按列存储存储地址计算

n表示二维数组总列数;

元素a[i][j]按行存储地址计算公式为:a+(j*m+i)*len;

例题

已知5行5列的二维数组a中的各元素占两个字节,求元素a[2][3]按列优先存储的存储地址

a[2][3]按列优先存储的存储地址是:a+(3*5+2)*2=a+34。

可以理解为: 

综上,此类在数组之中计算某元素的存储地址的题目计算可以理解为: 数组地址+此元素前的总元素数*单个元素长度

稀疏矩阵

        若一个矩阵中记录的元素有大量元素为0,考虑只存储部分不为0的数据可以将矩阵存储下来,并达到节省空间的目的,因此提出稀疏矩阵概念。

此部分牵扯计算稀疏矩阵中的某一个元素对应的一维数组的下标。

 

注: 

        稀疏矩阵转化方式复杂,公式不好记(主要是我老记混),而且推导过程耗时(太麻烦考试时间不够)所以直接从题目上下手。

        此部分考察绕不开公式,且公式、元素、数组必须三给其二,可以直接使用代数法对选项进行排除。

例题

如上述题目中按行存储,即矩阵A中的元素按顺序对应存储在数组M之中

A[0,0]---M[1]

A[1,0]---M[2]

A[0,1]---M[3]

......依次类推

那么可以将A[0,0]分别带入下面4个选项之中,看能否得出M[1];

选项A得出M[1];选项B得出M[0](排除);选项C得出M[0](排除);选项D得出M[1]

还剩选项A、D将A[1,0]带入选项A、D之中看能否得出M[2];

选项A得出M[2];选项D得出M[1](排除);

故选:A

注:

        每个题目不同,注意区分细节,例如在有的题目数组M从0开始计数,那么A[0,0]应该对应的就是M[0];

        有时候上、下三角不同,注意观察矩阵下标,因为矩阵下标作为系数参与运算;

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值