Row Major Order is a way to represent the elements of a multi-dimensional array in sequential memory. In Row Major Order, elements of a multi-dimensional array are arranged sequentially row by row, which means filling all the index of first row and then moving on to the next row.
Let’s see an example
Suppose we have some elements {1,2,3,4,5,6,7,8} to insert in array.
So If we insert these elements in row-major order, our 2-D array will look like
Here first fill index[0][0] and then index[0][1]
And for second-row index[1][0] and then index[1][1] and so on
Row Major Order Formula
Row Major Order Formula is used to calculate the memory address of a given array index location.
The Location of element A[i, j] can be obtained by evaluating the expression:
LOC (A [i, j]) = base_address + W [N * i + j]
Here,
base_address = address of the first element in the array.
W(Size of element) = Word size, means a number of bytes occupied by each element of an Array. It depends on the data type, e.g., 4 bytes for an int
in many systems.
M = Number of rows in the array.
Note: Array Index starts from 0.
i = is the row index
j = is the column index
Problem to solve on row major
Suppose we want to calculate the address of element A [1, 2] and the matrix is of 2*4. It can be calculated as follow:
Here,
base_address = 1000, W= 2, M=2, i=1, j=2
LOC (A [i, j]) = base_address + W * [(N*i) + j]
LOC (A[2, 3]) = 1000 + 2 *[4*(1) + 2]
= 1000 + 2 * [4 + 2]
= 1000 + 2 * 6
= 1000 + 12
= 1012
Row Major Order Examples
2-D Array Example
2-D array in C
int A[2][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8}
};
Above 2-D Array Will look Like
We have a 2*4 matrix it means our matrix has 2 rows and 4 columns
Memory Representation of 2-D array in Row Major Order
3-D Array Example
3-D array in C
int A[3][3][3] = {
{
{1,2, 3}, {3,4,5}, {5,6,7}
},
{
{4,5,6}, {6,7,8}, {7,8,9}
},
{
{2,3,4}, {4,5,6}, {6,7,8}
}
};
Above Array Will look Like
In this example, we will see a 3-D matrix or 3-dimensional array. We have a 3*3*3 matrix.