Column Major Order is a way to represent the multidimensional array in sequential memory. It has similar functionality as row-major order, but the way of process is different.

In Column Major Order, elements of a multidimensional array are arranged sequentially column-wise which means filling all the index of the first column and then move to the next column.

**Let’s see an example**

Suppose we have some elements {1,2,3,4,5,6,7,8} which we want to insert in an array by following column-major order.

So If we insert these elements in column-major order, our 2-D array will look like

Here first fill index[0][0] and then index[1][0] which is just opposite to the row-major where we first fill all row nodes then move to the next row.

And then for second-column index[0][1] and then index[1][1], index[0][2], index[1][2] and so on.

Page Contents

## Column Major Order Formula

The Location of element A[i, j] can be obtained by evaluating expression:

**LOC (A [i, j]) = base_address + W * [M * j + i]**

Here,

**base_address =** address of the first element in the array.

**W =** Word size means a number of bytes occupied by each element of an Array.

**M =** Number of rows in the array.

**N =** Number of columns in the array.

**Note: **Array Index starts from 0.

Here we have taken a 2-D array **A [2, 4]** which has 2 rows and 4 columns.

Suppose we want to calculate the address of element **A [1, 2]** in column-major order and the matrix is **2*4**. It can be calculated as follow:

Now to calculate the base address of any index using column-major order we can use the process given below.

It can be calculated as follow:

Here,**base_address** = 2000, **W**= 2, **M**=2, **N**=4, **i**=1, **j**=2**LOC (A [i, j])** = **base_address** + **W [M * j + i ]**

LOC (A[1, 2]) = 2000 + 2 [2*2 + 1]

= 2000 + 2 * [4 + 1]

= 2000 + 2 * 5

= 2000 + 10

= 2010