Вычисление адреса элемента в N-мерном массиве

Опубликовано: 30 Ноября, 2021

N-мерные массивы: N-мерный массив в основном представляет собой массив массивов. В 1-D массивы идентифицированы как один индекс, 2-D массивы идентифицированы с использованием двух индексов, аналогично, N-мерные массивы, идентифицируют с использованием N индексов. Многомерный массив объявляется следующим образом:

int NDA[S1][S2][S3]……..[SN];

Пояснение :

  • Здесь NDA - это имя N-мерного массива. Это может быть любое допустимое имя идентификатора.
  • В приведенном выше синтаксисе S 1 , S 2 , S 3 …… S N обозначает максимальные размеры N измерений.
  • Предполагается, что нижние границы равны нулю для всех измерений.
  • Вышеупомянутый массив объявлен как целочисленный массив. Это также может быть любой допустимый тип данных, кроме целого числа.

Адресный расчет N-мерных массивов :

Предположения:

  • N-мерный массив NDA с максимальными размерами N измерений: 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 нижние границы индексов не равны нулю.
  • Так что размеры индексов массива теперь другие и могут быть рассчитаны по формуле:

UpperBound – LowerBound +1

  • Итак, здесь S 1 = 5 - (-5) + 1 = 11. Аналогично, S 2 = 8, S 3 = 41 и S 4 = 8.

Для вычисления адреса нижние границы: t 1 , t 2 , t 3 …… .t N. Существует два способа хранения элементов массива:

  • Ряд мажор
  • Столбец Майор

Формула главного столбца:

Address of NDA[I1][I2]. . . [IN] = BAd + W*[((…ENSN-1+ EN-1 )SN-2 +… E3 )S2+ E2 )S1 +E1]

  • BAd represents the base address of the array.
  • W represents the width of the array i.e, the number of dimensions in the array.
  • Also, Ei is given by E = li – ti, where li and ti are the calculated indexes (indices of array element which needs to be determined) and lower bounds respectively.

Формула мажорной строки:

Address of NDA[I1][I2]. . . .[lN] = BAd + W*[((E1S2 + E2 )S3 +E3 )S4 ….. + EN-1 )SN + EN]

Самый простой способ узнать формулы:

Для мажорной строки: если width = 5, внутренняя последовательность E 1 S 2 + E 2 S 3 + E 3 S 4 + E 4 S 5 + E 5, а если width = 3, внутренняя последовательность E 1 S 2. + E 2 S 3 + E 3 . Выясните узор в указанном порядке и выполните четыре основных шага для формулы любой ширины:

  • Напишите внутреннюю последовательность.
  • Ставьте закрывающую скобку после каждого E, кроме первого члена. Таким образом, для ширины = 5 он становится

E1S2 + E2)S3 + E3)S4 + E4)S5 + E5).

  • Сначала поставьте все открывающие скобки.

((((E1S2 + E2)S3 + E3)S4 + E4)S5 + E5).

  • Включите в формулу базовый адрес и ширину.

Подход аналогичен для основного столбца, но образец внутренней последовательности противоположен образцу основного ряда.

Для основного столбца: если width = 5, внутренняя последовательность будет E 5 S 4 + E 4 S 3 + E 3 S 2 + E 2 S 1 + E 1 .

Пример: возьмем многомерный массив A [10] [20] [30] [40] с базовым адресом 1200 . Задача - найти адрес элемента 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.

Для вычисления ответа можно использовать любой из методов (строковый или большой столбец) (если не указано иное).
Применяя формулу для мажорной строки, напрямую запишите формулу как:

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.

Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .

Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.