Вычисление адреса элемента в N-мерном массиве
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 Ei = 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.