# How To Find The Location or Address Of The Particular Element In A 2D Array Using An Example?

We evaluate address of an element in a 2D array in 2 ways

1. Column Major Order
2. Row Major Order

## Column Major Order

The Formula is:

`LOC (A [J, K]) = Base (A) + w [M (K-1) + (J-1)]`

So, What is the meaning of this above equation? Explain one by one,

LOC(A[J, K]) =     is the location of the element in the Jth row and Kth column.

Base (A) = is the base address of the Array A.

w = is the number of bytes required to store single element of the array A.

M = is the total number of rows in the array.

J = is the row number of the element.

K = is the column number of the element.

So then go through the real time example,

Suppose, A[3,3] array elements are,

```   1  2  3
A = 1=> [10,20,30]
2=> [40,50,60]
3=> [70,80,90]```

If we represent this array in column wise then

```Array Indices = Elements = Address (Each element size is 4 bytes because "int")
[1,1]     = 10       = 1000
[2,1]     = 40       = 1004
[3,1]     = 70       = 1008
[1,2]     = 20       = 1012
[2,2]     = 50       = 1016
[3,2]     = 80       = 1020
[1,3]     = 30       = 1024
[2,3]     = 60       = 1028
[3,3]     = 90       = 1032```

Suppose we have to find the location of A [3, 2]. Then required values are:

```Base(A) = 1000
w = 4 bytes (Because each elements belongs to integer type assign memory size)
M = 3 (number of rows)
J = 3 (row number of element)
K = 2 (column number of element)```

Now put these values in the above formula as below:

```LOC (A [J, K]) = Base(A) + w [M (K-1) + (J-1)]
LOC (A [3, 2]) = 1000 + 4 [3 (2-1) + (3-1)]
= 1000 + 4 [3 * 1 + 2]
= 1000 + 4 
= 1000 + 20
= 1020 (80 is a Element and actual address is 1020). ```

Now,

## Row Major Order

The formula is

`LOC (A [J, K]) = Base (A) + w [N (J-1) + (K-1)]`

So, What is the meaning of this above equation? Explain one by one,

LOC(A[J, K]) =     is the location of the element in the Jth row and Kth column.

Base (A) = is the base address of the Array A.

w = is the number of bytes required to store single element of the array A.

N = is the total number of columns in the array.

J = is the row number of the element.

K = is the column number of the element.

So then go through the real time example,

Suppose, A[3,3] array elements are,

```         1  2  3
A = 1=> [10,20,30]
2=> [40,50,60]
3=> [70,80,90]```

If we represent this array in row wise then

```Array Indices = Elements  = Address (Element Size it's incremented)
[1,1]         =    10     =  1000
[1,2]         =    20     =  1004
[1,3]         =    30     =  1008
[2,1]         =    40     =  1012
[2,2]         =    50     =  1016
[2,3]         =    60     =  1020
[3,1]         =    70     =  1024
[3,2]         =    80     =  1028
[3,3]         =    90     =  1032```

Suppose we have to find the location of A [3, 2]. Then required values are:

```Base(A) = 1000
w = 4 bytes (Because each elements belongs to integer type assign memory size)
N = 3 (number of columns)
J = 3 (row number of element)
K = 2 (column number of element)```

Now put these values in the above formula as below:

```LOC (A [J, K]) = Base(A) + w [N (J-1) + (K-1)]
LOC (A [3, 2]) = 1000 + 4 [3 (3-1) + (2-1)]
= 1000 + 4 [2 * 1 + 2]
= 1000 + 4 
= 1000 + 16
= 1016 (50 is a Element and actual address is 1016). ```

If you find any issue and interested to rewrite it then contact us. 