📜  计算 N 维数组中元素的地址

📅  最后修改于: 2021-09-03 03:38:22             🧑  作者: Mango

N 维数组: N 维数组基本上是数组的数组。由于一维数组被标识为单个索引,二维数组使用两个索引标识,类似地, N 维数组使用N 个索引标识。多维数组声明如下:

说明

  • 这里,NDA 是 N 维数组的名称。它可以是任何有效的标识符名称。
  • 在上面的语法中, S 1 , S 2 , S 3 ……S N表示 N维的最大尺寸。
  • 假设所有维度的下限为零。
  • 上面的数组被声明为一个整数数组。它也可以是除整数以外的任何有效数据类型。

N维数组的地址计算

假设:

  • N维最大尺寸的N维数组NDA为S 1 , S 2 , S 3 , ………, S N
  • 需要计算地址的元素分别具有索引l 1 , l 2 , l 3 , …………..l N
  • 数组索引的下限可能不为零。例如,考虑以下数组 T: T[-5…5][2…9][14…54][-9…-2]。

说明

  • 在上面的数组T 中,索引的下限不是零。
  • 这样数组索引的大小现在就不同了,可以使用以下公式计算:
  • 所以,这里 S 1 = 5 – (-5) + 1 = 11。类似地,S 2 = 8,S 3 = 41 和 S 4 = 8。

对于地址计算,下限为t 1 、t 2 、t 3 …….t N 。有两种存储数组元素的方法:

  • 行专业
  • 专栏专业

列主要公式:

行主要公式:

学习公式的最简单方法:

对于行优先:如果宽度 = 5,则内部序列为E 1 S 2 + E 2 S 3 + E 3 S 4 + E 4 S 5 + E 5 ,如果宽度 = 3,则内部序列为E 1 S 2 + E 2 S 3 + E 3 。按顺序找出图案,并按照四个基本步骤来计算任意宽度的公式:

  • 写出内部序列。
  • 除第一项外,将右括号放在每个E 之后。所以对于宽度 = 5,它变成
  • 最初放置所有左括号。
  • 在公式中加入基地址和宽度。

Column Major的方法类似,但内部序列的模式与 row-major 模式相反。

对于列优先:如果宽度=5,则内部序列为E 5 S 4 + E 4 S 3 + E 3 S 2 + E 2 S 1 + E 1

示例:让我们以基地址为1200的多维数组A[10][20][30][40]为例。任务是找到元素A[1][3][5][6] 的地址

这里,BAd = 1200,宽度 = 4。
S1 = 10,S2 = 20,S3 = 30,S4 = 40

由于未给出下限,因此假设下限为零。
E1 = 1 – 0 = 1;
E2 = 3 – 0 = 3;
E3 = 5 – 0 = 5;
E4 = 6 – 0 = 6。

任何技术(行优先或列优先)都可用于计算答案(除非指定)。
应用row-major的公式,直接把公式写成:

A[1][3][5][6] = 1200 + 4(((1 × 20 + 3)30 +5)40 + 6)

=1200 +4((23 × 30 +5)40 +6)

=1200 + 4(695 × 40 + 6)

=1200 + (4 × 27806)

=112424。

如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live