Row-major Order
In row-major storage, a multidimensional array in linear memory is accessed such that rows are stored one after the other. It is the approach used by the C programming language and the statistical modelling language WinBUGS.
For example, consider this 2×3 array:
An array declared in C as
int A = { {1, 2, 3}, {4, 5, 6} };would be laid out contiguously in linear memory as:
1 2 3 4 5 6To traverse this array in the order in which it is laid out in memory, one would use the following nested loop:
for (i = 0; i < 2; i++) for (j = 0; j < 3; j++) printf("%d\n", A);The difference in offset from one column to the next is 1 and from one row to the next is 3. The linear offset from the beginning of the array to any given element A can then be computed as:
where NUMCOLS is the number of columns in the array.
The above formula only works when using the C convention of labeling the first element 0. In other words, row 1, column 2 in matrix A, would be represented as A.
Note that this technique generalizes, so a 2×3×4 array looks like:
int A = {{{1,2,3,4}, {5,6,7,8}, {9,10,11,12}}, {{13,14,15,16}, {17,18,19,20}, {21,22,23,24}}};and the array would be laid out in linear memory as:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24Read more about this topic: Row-major Order
Famous quotes containing the word order:
“In the order of literature, as in others, there is no act that is not the coronation of an infinite series of causes and the source of an infinite series of effects.”
—Jorge Luis Borges (18991986)