2. ARRAYS
The Array is the most commonly used Data Structure.
An array is a collection of data elements that are of the same type (e.g.,
a collection of integers, collection of characters, collection of doubles).
OR
Array is a data structure that represents a collection of the same types
of data.
The values held in an array are called array elements
An array stores multiple values of the same type – the element type
The element type can be a primitive type or an object reference
Therefore, we can create an array of integers, an array of characters, an
array of String objects, an array of Coin objects, etc.
Trupti Agrawal 2
3. Array Applications
Given a list of test scores, determine the maximum and minimum scores.
Read in a list of student names and rearrange them in alphabetical order
(sorting).
Given the height measurements of students in a class, output the names of
those students who are taller than average.
Trupti Agrawal 3
4. Array Declaration
Syntax:
<type> <arrayName>[<array_size>]
Ex. int Ar[10];
The array elements are all values of the type <type>.
The size of the array is indicated by <array_size>, the number
of elements in the array.
<array_size> must be an int constant or a constant expression.
Note that an array can have multiple dimensions.
Trupti Agrawal 4
6. Subscripting
Declare an array of 10 integers:
int Ar[10]; // array of 10 ints
To access an individual element we must apply a subscript to array named
Ar.
A subscript is a bracketed expression.
The expression in the brackets is known as the index.
First element of array has index 0.
Ar[0]
Second element of array has index 1, and so on.
Ar[1], Ar[2], Ar[3],…
Last element has an index one less than the size of the array.
Ar[9]
Incorrect indexing is a common error.
Trupti Agrawal 6
8. Subscripting Example
#include <stdio.h>
int main ()
{
int n[10]; /* n is an array of 10 integers */
int i,j;
/* initialize elements of array n to 0 */
for ( i = 0; i < 10; i++ )
{
n[ i ] = i + 100; /* set element at location i to i + 100 */
}
/* output each array element's value */
for (j = 0; j < 10; j++ )
{
printf("Element[%d] = %dn", j, n[j] );
}
return 0;
}
Trupti Agrawal 8
9. Multidimensional Arrays
An array can have many dimensions – if it has more than one dimension, it
is called a multidimensional array
Each dimension subdivides the previous one into the specified number of
elements
Each dimension has its own length constant
Because each dimension is an array of array references, the arrays within
one dimension can be of different lengths
Trupti Agrawal 10
10. Multidimensional Arrays
2 Dimensional 3 Dimensional
Multiple dimensions get difficult to visualize graphically.
•
double Coord[100][100][100];
Trupti Agrawal 11
11. Processing Multi-dimensional Arrays
The key to processing all cells of a multi-dimensional array is nested
loops.
[0] [1] [2] [3]
[0]
[1]
[2]
10 11 12 13
14 15 16 17
18 19 20 21
22 23 24 25
26 27 28 29
[3]
[4]
for (int row=0; row!=5; row++) {
for (int col=0; col!=4; col++) {
System.out.println( myArray[row][col] );
}
}
for (int col=0; col!=4; col++) {
for (int row=0; row!=5; row++) {
System.out.println( myArray[row][col] );
}
}
Trupti Agrawal 12
12. Two-Dimensional Arrays
• A one-dimensional array stores a list of elements
• A two-dimensional array can be thought of as a table of
elements, with rows and columns
two
dimensions
one
dimension
Trupti Agrawal 13
13. Two-Dimensional Arrays [Cont…]
A two-dimensional array consists of a certain number of rows and columns:
const int NUMROWS = 3;
const int NUMCOLS = 7;
int Array[NUMROWS][NUMCOLS];
0 1 2 3 4 5 6
0 4 18 9 3 -4 6 0
1 12 45 74 15 0 98 0
2 84 87 75 67 81 85 79
Array[2][5] 3rd value in 6th column
Array[0][4] 1st value in 5th column
The declaration must specify the number of rows and the number of columns,
and both must be constants.
Trupti Agrawal 14
14. Address calculation using column
and row major ordering
In computing, row-major order and column-major order describe methods
for storing multidimensional arrays in linear memory.
By following standard matrix notation, rows are numbered by the first index
of a two-dimensional array and columns by the second index.
Array layout is critical for correctly passing arrays between programs
written in different languages. It is also important for performance when
traversing an array because accessing array elements that are contiguous in
memory is usually faster than accessing elements which are not, due
to caching.
Trupti Agrawal 15
15. Row-major order In row-major storage, a multidimensional array in linear memory is
organized such that rows are stored one after the other. It is the
approach used by the C programming language, among others.
For example, consider this 2×3 array:
1 2 3
4 5 6
An array declared in C as
int A[2][3] = { {1, 2, 3}, {4, 5, 6} };
is laid out contiguously in linear memory as:
1 2 3 4 5 6
Trupti Agrawal 16
16. Row-major order[Cont…]
To traverse this array in the order in which it is laid out in memory, one
would use the following nested loop:
for (row = 0; row < 2; row++)
for (column = 0; column < 3; column++)
printf("%dn", A[row][column]);
Trupti Agrawal 17
17. Column-major order
Column-major order is a similar method of flattening arrays
onto linear memory, but the columns are listed in sequence.
The scientific programming languages Fortran and Julia, the
matrix-oriented languages MATLAB and Octave, use column-major
ordering. The array
1 2 3
4 5 6
if stored contiguously in linear memory with column-major
order looks like the following:
1 4 2 5 3 6
Trupti Agrawal 18