250 likes | 276 Views
Explore the world of arrays in Java programming, from declaration and initialization to sorting and searching. Learn how arrays work, common operations, and various sorting techniques. Discover the power of nested arrays and searching algorithms for efficient data manipulation.
E N D
A Wide Array of Possibilities Java’s Central Casting CS 102
What’s an Array • An array is a group of values of the same type (usually stored in consecutive memory locations) • Arrays are objects • Can be assigned to variables of type Object • Dynamically created
An Array of Examples From Figure 5.3 int n[]; // declare an array of integers // initialize instance variables public void init() { n = new int[ 10 ]; //dynamic allocation }
The Declaration of Array Array declarations int[] ai; // array of int short[][] as; // array of array of short Object[] ao, // array of Object otherAo; // array of Object
Declaring Arrays • Can’t specify the length in a declaration int test [] = new int [100]; // Okay int test2 [100]; // No good int test3 [100]=new int [100]; // No good
Some Array Definitions These create array objects: Exception ae[] = new Exception[3]; Object aao[][] = new Exception[2][3]; int[] factorial = { 1, 1, 2, 6, 24 }; String[] aas = {"array", "of", "String"};
An Array Example int face; int frequency[]; // initialize instance variables public void init() { frequency = new int[ 7 ]; for (int roll=1; roll <= 6000; roll++ ) { face = 1 + (int) (Math.random() * 6 ); ++frequency[ face ]; } }
An Array of Observations • Arrays know their own length test.length == 100 • What kind of loops do we usually use with arrays? • Arrays start at index 0 • Last index == ?? • Arrays must be indexed by int values(short, byte, or char are okay, but long is no good)
Operating on an Array • Square brackets are an operator • Brackets have very high precedence • Same as ()’s • Example -17*studentGrades[12] * 2
"Can he do that?" • What’s wrong with the following code? int scores[] = {98, 76, 84, 97, 101, 78}; int counter=0; for (; counter <= scores.length; counter++) { System.out.println("Test #" + counter + ": " + scores[counter]); }
Array Initializers • Use {}’s to set initial values • int grades[] = {87, 92, 76, 94}
Finally, a Constant Variable • What’s wrong with the following code? // Figure 5.6 // This Applet won’t compile import java.applet.Applet; public class FinalTest extends Applet { final int x; }
Pass the Salt, and an Array of int • From last time: primitive types and reference types • Parameter passing: offering data to a method in the method call public void paint(Graphics graphObject) • When you call paint, give it a Graphics object • How does Java pass data around?
Call Me Ishmael, But Don't Call Me Late for Dinner • Call-by-value • The called method gets a copy of the actual data (i.e., its value) • Called method can't corrupt the original data, because it's only got a copy • Call-by-reference • The called method gets a reference to the data
Arrays & Call-by-Reference • Reference types are always passed call-by-reference • Pro: Don’t need to copy lots of data • Con: Since you can access the original object, you can change it • Arrays are a reference type • Whole arrays are passed call-by-reference
What About Array Elements? • If an array is an array of a reference type, then individual elements are passed as call-by-____________ Graphics[] graphicsArray = new Graphics[10]; • If an array is an array of a reference type, then individual elements are passed as call-by-____________ int[] scores = new int[10];
Searching & Sorting Data • The Second Law of Thermodynamics • Sorting restores order to the world • Sorting in everyday life • Bank checks by account • Searching is easier when sorted • Reverse directories of phone numbers
Sorting in Computers • Usually start with an array of items to be sorted • Integers • Social Security numbers • Last names and first names • Lots of data • All the SSN’s in the U.S. • All of GM’s employees
Different Ways to Sort • Bubble sort • Compare two neighbors, swap if out of order 1 2 5 4 7 8 6 1 2 4 5 7 8 6 1 2 4 5 7 6 8 1 2 4 5 6 7 8
The Code for Bubble Sort public void sort() { int hold; // temporary holding area for swap // passes for ( int pass = 1; pass < a.length; pass++ ) // one pass for ( int i = 0; i < a.length - 1; i++ ) // one comparison if ( a[ i ] > a[ i + 1 ] ) { // one swap hold = a[i]; a[ i ] = a[ i + 1 ]; a[ i + 1 ] = hold; } } Nested for loops
There’s More Than One Way to Sort a Cat • Other sorts • Quicksort • Heapsort • Bucket sort • Different sorts have different characteristics • Memory usage • Speed
Searching Here, There & Everywhere • Need to find a value? Search for it! • Linear search • Is it the next one? • No, then look again • Yes, stick a fork in me, ‘cuz I’m done • Works on unsorted items • Binary search • Cut in half every time
You’re a Detective in a Small Town • The killer called the victim • Get the LUDs • Look up the number in a reverse directory
Arrays of Arrays • Arrays in multiple dimensions • Not just a list • A table (an array of arrays) • A cube (an array of arrays of arrays)
An Example An array of arrays int b[][] = { {1,2}, {3, 4, 5}} Row 0: 1 2 Row 1: 3 4 5 A 3x3 array int b[][]; b = new int[3][3];