+ All Categories
Home > Documents > 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91...

1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91...

Date post: 20-Dec-2015
Category:
View: 212 times
Download: 0 times
Share this document with a friend
Popular Tags:
27
1 Arrays Arrays An An array array is an ordered list of values is an ordered list of values 0 1 2 3 4 5 6 7 8 79 87 94 82 67 98 87 81 74 An array of size N is indexed from zero to N-1 An array of size N is indexed from zero to N-1 scores The entire array The entire array has a single name has a single name Each value has a numeric Each value has a numeric index index This array holds 10 values that are indexed from 0 to 9 This array holds 10 values that are indexed from 0 to 9
Transcript
Page 1: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

1

ArraysArrays

An An arrayarray is an ordered list of values is an ordered list of values

0 1 2 3 4 5 6 7 8 9

79 87 94 82 67 98 87 81 74 91

An array of size N is indexed from zero to N-1An array of size N is indexed from zero to N-1

scores

The entire arrayThe entire arrayhas a single namehas a single name

Each value has a numeric Each value has a numeric indexindex

This array holds 10 values that are indexed from 0 to 9This array holds 10 values that are indexed from 0 to 9

Page 2: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

2

ArraysArrays

A particular value in an array is referenced using the array A particular value in an array is referenced using the array name followed by the index in bracketsname followed by the index in brackets

For example, the expressionFor example, the expression

scores[2]scores[2]

refers to the value 94 (which is the 3rd value in the array)refers to the value 94 (which is the 3rd value in the array)

That expression represents a place to store a single integer, That expression represents a place to store a single integer, and can be used wherever an integer variable canand can be used wherever an integer variable can

For example, it can be assigned a value, printed, or used in For example, it can be assigned a value, printed, or used in a calculationa calculation

Page 3: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

3

ArraysArrays

An array stores multiple values of the same typeAn array stores multiple values of the same type

That type can be primitive types or objectsThat type can be primitive types or objects

Therefore, we can create an array of integers, or an array Therefore, we can create an array of integers, or an array of characters, or an array of String objects, etc.of characters, or an array of String objects, etc.

In Java, the array itself is an objectIn Java, the array itself is an object

Therefore the name of the array is a object reference Therefore the name of the array is a object reference variable, and the array itself is instantiated separatelyvariable, and the array itself is instantiated separately

Page 4: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

4

Declaring ArraysDeclaring Arrays

The The scoresscores array could be declared as follows: array could be declared as follows:

int[] scores = new int[10];int[] scores = new int[10];

Note that the type of the array does not specify its size, but Note that the type of the array does not specify its size, but each object of that type has a specific sizeeach object of that type has a specific size

The type of the variable The type of the variable scoresscores is is int[]int[] (an array of (an array of integers)integers)

It is set to a new array object that can hold 10 integersIt is set to a new array object that can hold 10 integers

Page 5: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

5

Declaring ArraysDeclaring Arrays

Some examples of array declarations:Some examples of array declarations:

float[] prices = new float[500];float[] prices = new float[500];

boolean[] flags;boolean[] flags;

flags = new boolean[20];flags = new boolean[20];

char[] codes = new char[1750];char[] codes = new char[1750];

Page 6: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

6

Bounds CheckingBounds Checking

Once an array is created, it has a fixed sizeOnce an array is created, it has a fixed size

An index used in an array reference must specify a valid An index used in an array reference must specify a valid elementelement

That is, the index value must be in bounds (0 to N-1)That is, the index value must be in bounds (0 to N-1)

The Java interpreter will throw an exception if an array The Java interpreter will throw an exception if an array index is out of bounds index is out of bounds

This is called automatic This is called automatic bounds checkingbounds checking

Page 7: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

Bounds CheckingBounds Checking

For example, if the array For example, if the array codescodes can hold 100 values, it can can hold 100 values, it can only be indexed using the numbers 0 to 99only be indexed using the numbers 0 to 99

If If countcount has the value 100, then the following reference has the value 100, then the following reference will cause an will cause an ArrayOutOfBoundsExceptionArrayOutOfBoundsException::

System.out.println (codes[count]);System.out.println (codes[count]);

It’s common to introduce It’s common to introduce off-by-one errorsoff-by-one errors when using when using arraysarrays

for (int index=0; index <= 100; index++)codes[index] = index*50 + epsilon;

problem

Page 8: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

8

Bounds CheckingBounds Checking

Each array object has a public constant called Each array object has a public constant called lengthlength that that stores the size of the arraystores the size of the array

It is referenced using the array name (just like any other It is referenced using the array name (just like any other object):object):

scores.lengthscores.length

Note that Note that lengthlength holds the number of elements, not the holds the number of elements, not the largest indexlargest index

Page 9: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

public class ReverseNumbers{ public static void main (String[] args) { double[] numbers = new double[10];

System.out.println ("The size of the array: " + numbers.length);

for (int index = 0; index < numbers.length; index++) { System.out.print ("Enter number " + (index+1) + ": "); numbers[index] = readDouble(); } System.out.println ("The numbers in reverse:");

for (int index = numbers.length-1; index >= 0; index--) System.out.print (numbers[index] + " "); System.out.println (); }}

First example First example

Page 10: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

public class LetterCount { public static void main (String[] args) { final int NUMCHARS = 26; int[] upper = new int[NUMCHARS]; int[] lower = new int[NUMCHARS]; char current; // the current character being processed int other = 0; // counter for non-alphabetics

System.out.println ("Enter a sentence:"); String line = readString(); // Count the number of each letter occurance for (int ch = 0; ch < line.length(); ch++) { current = line.charAt(ch); if (current >= 'A' && current <= 'Z') upper[current-'A']++; else if (current >= 'a' && current <= 'z') lower[current-'a']++; else other++; }

Second example Second example

Page 11: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

// Print the results System.out.println (); for (int letter=0; letter < upper.length; letter++) { System.out.print ( (char) (letter + 'A') ); System.out.print (": " + upper[letter]); System.out.print ("\t\t" + (char) (letter + 'a') ); System.out.println (": " + lower[letter]); } System.out.println (); System.out.println ("Non-alphabetic characters: " + other); } }

Second example (continued) Second example (continued)

Page 12: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

12

Array Declarations RevisitedArray Declarations Revisited

The brackets of the array type can be associated with the The brackets of the array type can be associated with the element type or with the name of the arrayelement type or with the name of the array

Therefore the following declarations are equivalent:Therefore the following declarations are equivalent:

float[] prices;float[] prices;

float prices[];float prices[];

The first format is generally more readableThe first format is generally more readable

Page 13: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

13

Initializer ListsInitializer Lists

An An initializer listinitializer list can be used to instantiate and initialize an can be used to instantiate and initialize an array in one steparray in one step

The values are delimited by braces and separated by The values are delimited by braces and separated by commascommas

Examples:Examples:

int[] units = {147, 323, 89, 933, 540, int[] units = {147, 323, 89, 933, 540,

269, 97, 114, 298, 476};269, 97, 114, 298, 476};

char[] letterGrades = {'A', 'B', 'C', 'D', 'F'};char[] letterGrades = {'A', 'B', 'C', 'D', 'F'};

Page 14: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

14

Initializer ListsInitializer Lists

Note that when an initializer list is used:Note that when an initializer list is used:• the the newnew operator is not used operator is not used

• no size value is specifiedno size value is specified

The size of the array is determined by the number of items The size of the array is determined by the number of items in the initializer listin the initializer list

An initializer list can only be used in the declaration of an An initializer list can only be used in the declaration of an arrayarray

Page 15: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

15

Arrays of ObjectsArrays of Objects

The elements of an array can be object referencesThe elements of an array can be object references

The following declaration reserves space to store 25 The following declaration reserves space to store 25 references to references to StringString objects objects

String[] words = new String[25];String[] words = new String[25];

It does NOT create the It does NOT create the StringString objects themselves objects themselves

Each object stored in an array must be instantiated Each object stored in an array must be instantiated separatelyseparately

Page 16: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

Command-Line ArgumentsCommand-Line Arguments

The signature of the The signature of the mainmain method indicates that it takes an method indicates that it takes an array of array of StringString objects as a parameter objects as a parameter

These values come from command-line arguments that are These values come from command-line arguments that are provided when the interpreter is invokedprovided when the interpreter is invoked

For example, the following invocation of the interpreter For example, the following invocation of the interpreter passes an array of three passes an array of three StringString objects into main: objects into main:

> java DoIt pennsylvania texas california> java DoIt pennsylvania texas california

These strings are stored at indexes 0-2 of the parameterThese strings are stored at indexes 0-2 of the parameter

Page 17: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

17

SortingSorting

Sorting is the process of arranging a list of items into a Sorting is the process of arranging a list of items into a particular orderparticular order

There must be some value on which the order is basedThere must be some value on which the order is based

There are many algorithms for sorting a list of itemsThere are many algorithms for sorting a list of items

These algorithms vary in efficiencyThese algorithms vary in efficiency

We will examine two specific algorithms: We will examine two specific algorithms: • Selection SortSelection Sort

• Insertion SortInsertion Sort

Page 18: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

18

Selection SortSelection Sort

The approach of Selection Sort:The approach of Selection Sort:• select one value and put it in its final place in the sort listselect one value and put it in its final place in the sort list

• repeat for all other valuesrepeat for all other values

In more detail:In more detail:• find the smallest value in the listfind the smallest value in the list

• switch it with the value in the first positionswitch it with the value in the first position

• find the next smallest value in the listfind the next smallest value in the list

• switch it with the value in the second positionswitch it with the value in the second position

• repeat until all values are placedrepeat until all values are placed

Page 19: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

19

Selection SortSelection Sort

An example:An example:

original: 3 9 6 1 2original: 3 9 6 1 2

smallest is 1: 1 9 6 3 2smallest is 1: 1 9 6 3 2

smallest is 2: 1 2 6 3 9smallest is 2: 1 2 6 3 9

smallest is 3: 1 2 3 6 9smallest is 3: 1 2 3 6 9

smallest is 6: 1 2 3 6 9smallest is 6: 1 2 3 6 9

Page 20: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

int min, temp;

for (int index = 0; index < numbers.length-1; index++) { min = index; for (int scan = index+1; scan < numbers.length; scan++) if (numbers[scan] < numbers[min]) min = scan;

// Swap the values temp = numbers[min]; numbers[min] = numbers[index]; numbers[index] = temp; }

Selection Sort – the codeSelection Sort – the code

Page 21: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

21

Insertion SortInsertion Sort

The approach of Insertion Sort:The approach of Insertion Sort:• Pick any item and insert it into its proper place in a sorted sublistPick any item and insert it into its proper place in a sorted sublist

• repeat until all items have been insertedrepeat until all items have been inserted

In more detail:In more detail:• consider the first item to be a sorted sublist (of one item)consider the first item to be a sorted sublist (of one item)

• insert the second item into the sorted sublist, shifting items as insert the second item into the sorted sublist, shifting items as necessary to make room to insert the new additionnecessary to make room to insert the new addition

• insert the third item into the sorted sublist (of two items), shifting insert the third item into the sorted sublist (of two items), shifting as necessaryas necessary

• repeat until all values are inserted into their proper positionrepeat until all values are inserted into their proper position

Page 22: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

22

Insertion SortInsertion Sort

An example:An example:

original: 3 9 6 1 2original: 3 9 6 1 2

insert 9: 3 9 6 1 2insert 9: 3 9 6 1 2

insert 6: 3 6 9 1 2insert 6: 3 6 9 1 2

insert 1: 1 3 6 9 2insert 1: 1 3 6 9 2

insert 2: 1 2 3 6 9insert 2: 1 2 3 6 9

Page 23: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

for (int index = 1; index < numbers.length; index++) { int key = numbers[index]; int position = index;

// shift larger values to the right while (position > 0 && numbers[position-1] > key) { numbers[position] = numbers[position-1]; position--; } numbers[position] = key;}

Insertion Sort – the codeInsertion Sort – the code

Page 24: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

24

Comparing SortsComparing Sorts

Both Selection and Insertion sorts are similar in efficiencyBoth Selection and Insertion sorts are similar in efficiency

The both have outer loops that scan all elements, and inner The both have outer loops that scan all elements, and inner loops that compare the value of the outer loop with almost loops that compare the value of the outer loop with almost all values in the listall values in the list

Therefore approximately nTherefore approximately n22 number of comparisons are number of comparisons are made to sort a list of size nmade to sort a list of size n

We therefore say that these sorts are of We therefore say that these sorts are of order norder n22

Other sorts are more efficient: Other sorts are more efficient: order n logorder n log22 n n

Page 25: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

25

Two-Dimensional ArraysTwo-Dimensional Arrays

A A one-dimensional arrayone-dimensional array stores a simple list of values stores a simple list of values

A A two-dimensional arraytwo-dimensional array can be thought of as a table of can be thought of as a table of values, with rows and columnsvalues, with rows and columns

A two-dimensional array element is referenced using two A two-dimensional array element is referenced using two index valuesindex values

To be precise, a two-dimensional array in Java is an array To be precise, a two-dimensional array in Java is an array of arraysof arrays

Page 26: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

int[][] table = new table [10][10];for (int i=0; i<10; i++) for (int j=0; j<10; j++)

table[i][j] = i * j; System.out.println(table[4][3]);System.out.println(table[2][1]);

Multiplication tableMultiplication table

Page 27: 1 Arrays b An array is an ordered list of values 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 An array of size N is indexed from zero to N-1 scores.

27

Multidimensional ArraysMultidimensional Arrays

An array can have as many dimensions as needed, creating An array can have as many dimensions as needed, creating a multidimensional arraya multidimensional array

Each dimension subdivides the previous one into the Each dimension subdivides the previous one into the specified number of elementsspecified number of elements

Each array dimension has its own Each array dimension has its own lengthlength constant constant

Because each dimension is an array of array references, the Because each dimension is an array of array references, the arrays within one dimension could be of different lengthsarrays within one dimension could be of different lengths


Recommended