

















Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
An in-depth analysis of array representation and memory allocation in java, c, and c++ for one-dimensional (1d) and two-dimensional (2d) arrays. It covers topics such as contiguous memory locations, space overhead, row-major and column-major mapping, irregular arrays, and lower triangular matrices. The document also discusses the conversion of 2d arrays into 1d arrays and the disadvantages of using 2d arrays for matrices.
Typology: Study notes
1 / 25
This page cannot be seen from the preview
Don't miss anything!


















Memory a^
b^
c^
d
start
The elements of a 2-dimensional array a
declared as: int [][]a = new int[3][4]; may be shown as a table
a[0][0]
a[0][1]
a[0][2]
a[0][3]
a[1][0]
a[1][1]
a[1][2]
a[1][3]
a[2][0]
a[2][1]
a[2][2]
a[2][3]
a[0][0]
a[0][1]
a[0][2]
a[0][3]
row 0
a[1][0]
a[1][1]
a[1][2]
a[1][3]
row 1
a[2][0]
a[2][1]
a[2][2]
a[2][3]
row 2
2-dimensional array x
a, b, c, d e, f, g, h^ i, j, k, l
view 2D array as a 1D array of rows
x = [row0, row1, row 2] row 0 = [a,b, c, d] row 1 = [e, f, g, h] row 2 = [i, j, k, l] and store as 4 1D arrays
a^
b^
c^
d
e^
f^
g^
h
i^
j^
k^
l
x[]
x.length = 3 x[0].length = x[1].length = x[2].length = 4
a^
b^
c^
d
e^
f^
g^
h
i^
j^
k^
l
x[]
-^
This representation is called the array-of-arraysrepresentation.
-^
Requires contiguous memory of size 3, 4, 4, and 4 for the4 1D arrays.
-^
1 memory block of size number of rows and number ofrows blocks of size number of columns
a b c d^ e f g h^ i j k l
-^
Convert into 1D array y by collecting elements by rows.
-^
Within a row elements are collected from left to right.
-^
Rows are collected from top to bottom.
-^
We get y[] = {a, b, c, d, e, f, g, h, i, j, k, l}
row 0
row 1
row 2
…
row i
Space Overhead
row 0
row 1
row 2
…
row i
4 bytes for start of 1D array + 4 bytes for length of 1D array + 4 bytes for c (number of columns) = 12 bytes (number of rows = length /c)
Need contiguous memory of size rc.
Table of values. Has rows and columns, but
numbering begins at 1 rather than 0.
a b c d
row 1
e f g h
row 2
i j k l
row 3
such as add, transpose, multiply, and so on.^ – Suppose that x and y are 2D arrays. Can’t do x + y,
x –y, x * y, etc. in Java.
support of all matrix operations. See text.
n x n matrix is n
2
whole
An n x n matrix in which all nonzero terms are either
on or below the diagonal.
… + n = n(n+1)/2.