130 likes | 259 Vues
This guide covers fundamental concepts related to sorting and searching arrays using Java. It delves into the bubble sort method, explaining how it organizes array elements and how it operates through multiple passes to ensure correct order. Additionally, the guide discusses linear and binary searching techniques, detailing their mechanisms for locating elements within arrays. With practical code examples from `PassArray.java`, readers will learn about passing arrays to methods, altering values, and the differences between various search strategies for efficient data retrieval.
E N D
8/8: Sorting and Searching Arrays • Look at PassArray.java • Sorting arrays: the bubble sort method • Searching arrays: the linear search • Searching arrays: the binary search
PassArray.java -- pt. 1 //Fig 7.10: PassArray.java //Passing arrays and individual elements to methods import java.awt.Container; import javax.swing.*; public class PassArray extends JApplet { JTextArea outputArea; String output; public void init() { outputArea = new JTextArea(); Container c = getContentPane(); c.add( outputArea );
PassArray.java -- pt. 2 int a[] = { 1, 2, 3, 4, 5 }; output = "Effects of passing entire " + "array call-by-reference:\n" + "The values of the original array are:\n"; for ( int i = 0; i < a.length ; i++ ) output += " " + a[ i ]; modifyArray ( a ); //passing the whole array output+="\n\nValues of the modified array are:\n";
PassArray.java -- pt. 3 for ( int i = 0; i < a.length ; i++ ) output += " " + a[ i ]; output += "\n\nEffects of passing array " + "element call-by-value:\n" + "a[3] before modifyElement: " + a[ 3 ]; modifyElement ( a [ 3 ] ); output += "\na[3] after modifyElement: " + a [ 3 ]; outputArea.setText ( output ); }
PassArray.java -- pt. 4 public void modifyArray ( int b[] ) { for ( int j = 0 ; j < b.length; j++ ) b [ j ] *= 2; } public void modifyElement ( int e ) { e *= 2; } }
Sorting Arrays using Bubble Sort • Reorganizing an array in some order (low to high, etc.) • Bubble Sort compares two values, switches them in the array positions if appropriate, and checks the next two values.
Sorting Arrays using Bubble Sort • In this case, 3 & 6 are compared, and NOT switched. • Then, 6 & 1 are compared, then switched. • Then 6 & 9 are compared and NOT switched. • This is ONLY ONE PASS through the array.
Sorting Arrays using Bubble Sort • Core of sorting: an if structure. • This is nested inside a for loop to look at each pair of values in the array. • This loop in nested inside another loop to make multiple passes through the array. • Look at SortThem & its source code.
Searching Arrays: Linear Search • How do you find a particular element value in an array? • One way: a linear search. • The core structure: an if statement in a for loop. • The for loop gives movement through the array • The if structure looks for a matching value in the elements.
Searching Arrays: Linear Search • The for loop gives movement through the array • The if structure looks for a matching value in the elements. for ( int n = 0 ; n < array.length ; n++ ) { if ( array [ n ] == key ) return n ; }
Searching Arrays: Binary Sort • Go to the middle of the array. • See if the number you are looking for is higher or lower, and go to the middle of that side. • Repeat until found. • Note that the array must already be sorted!
Searching Arrays: Linear vs. Binary • A linear search works well for smaller arrays, and is simpler to understand and troubleshoot. • A binary search is better for a large array. It is more efficient in its searching.
Program of the Day: BinarySearch • pg. 291 BinarySearch.java • Once you get it to work, figure out how it works. • Next time: review searching and learn about multiple-subscripted arrays.