490 likes | 680 Views
Chapter 10: Applications of Arrays and Strings. J ava P rogramming: From Problem Analysis to Program Design, Second Edition. Chapter Objectives. Learn how to implement the sequential search algorithm.
E N D
Chapter 10: Applications of Arrays and Strings JavaProgramming: From Problem Analysis to Program Design, Second Edition
Chapter Objectives • Learn how to implement the sequential search algorithm. • Explore how to sort an array using bubble sort, selection sort, and insertion sort algorithms. • Learn how to implement the binary search algorithm. • Become aware of the classVector. • Learn more about manipulating strings using the classString. Java Programming: From Problem Analysis to Program Design, Second Edition
List Processing • List: A set of values of the same type. • Basic operations performed on a list: • Search list for given item. • Sort list. • Insert item in list. • Delete item from list. Java Programming: From Problem Analysis to Program Design, Second Edition
Search • Necessary components to search a list: • Array containing the list. • Length of the list. • Item for which you are searching. • After search completed: • If item found, report “success” and return location in array. • If item not found, report “failure.” Java Programming: From Problem Analysis to Program Design, Second Edition
Search public static int seqSearch(int[] list, int listLength, int searchItem) { int loc; boolean found = false; for (loc = 0; loc < listLength; loc++) if (list[loc] == searchItem) { found = true; break; } if (found) return loc; else return -1; } Java Programming: From Problem Analysis to Program Design, Second Edition
Sorting a List Bubble sort • Suppose list[0...n - 1] is a list of n elements, indexed 0 to n - 1. We want to rearrange (sort) the elements of list in increasing order. The bubble sort algorithm works as follows: • In a series of n - 1 iterations, the successive elements, list[index] and list[index + 1], of list are compared. If list[index] is greater than list[index + 1], then the elements list[index] and list[index + 1] are swapped (interchanged). Java Programming: From Problem Analysis to Program Design, Second Edition
Bubble Sort Java Programming: From Problem Analysis to Program Design, Second Edition
Bubble Sort Java Programming: From Problem Analysis to Program Design, Second Edition
Bubble Sort public static void bubbleSort(int list[], int listLength) { int temp; int counter, index; for (counter = 0; counter < listLength - 1; counter++) { for (index = 0; index < listLength - 1 – counter; index++) if (list[index] > list[index + 1]) { temp = list[index]; list[index] = list[index + 1]; list[index + 1] = temp; } } } Java Programming: From Problem Analysis to Program Design, Second Edition
Bubble Sort • For a list of length n, an average bubble sort makes n(n – 1) / 2 key comparisons and about n(n – 1) / 4 item assignments. • Therefore, if n = 1000, bubble sort makes about 500,000 key comparisons and about 250,000 item assignments to sort the list. Java Programming: From Problem Analysis to Program Design, Second Edition
Selection Sort • List is sorted by selecting list element and moving it to its proper position. • Algorithm finds position of smallest element and moves it to top of unsorted portion of list. • Repeats process above until entire list is sorted. Java Programming: From Problem Analysis to Program Design, Second Edition
Selection Sort Java Programming: From Problem Analysis to Program Design, Second Edition
Selection Sort Java Programming: From Problem Analysis to Program Design, Second Edition
Selection Sort public static void selectionSort(int[] list, int listLength) { int index; int smallestIndex; int minIndex; int temp; for (index = 0; index < listLength – 1; index++) { smallestIndex = index; for (minIndex = index + 1; minIndex < listLength; minIndex++) if (list[minIndex] < list[smallestIndex]) smallestIndex = minIndex; temp = list[smallestIndex]; list[smallestIndex] = list[index]; list[index] = temp; } } Java Programming: From Problem Analysis to Program Design, Second Edition
Selection Sort • For a list of length n, an average selection sort makes n(n – 1) / 2 key comparisons and 3(n – 1) item assignments. • Therefore, if n = 1000, selection sort makes about 500,000 key comparisons and about 3000 item assignments to sort the list. Java Programming: From Problem Analysis to Program Design, Second Edition
Insertion Sort The insertion sort algorithm sorts the list by moving each element to its proper place. Java Programming: From Problem Analysis to Program Design, Second Edition
Insertion Sort Java Programming: From Problem Analysis to Program Design, Second Edition
Insertion Sort Java Programming: From Problem Analysis to Program Design, Second Edition
Insertion Sort Java Programming: From Problem Analysis to Program Design, Second Edition
Insertion Sort public static void insertionSort(int[] list, int noOfElements) { int firstOutOfOrder, location; int temp; for (firstOutOfOrder = 1; firstOutOfOrder < noOfElements; firstOutOfOrder++) if (list[firstOutOfOrder] < list[firstOutOfOrder - 1]) { temp = list[firstOutOfOrder]; location = firstOutOfOrder; do { list[location] = list[location - 1]; location--; } while(location > 0 && list[location - 1] > temp); list[location] = temp; } } //end insertionSort Java Programming: From Problem Analysis to Program Design, Second Edition
Insertion Sort • For a list of length n, on average, the insertion sort makes (n2 + 3n – 4) / 4 key comparisons and about n(n – 1) / 4 item assignments. • Therefore, if n = 1000, the insertion sort makes about 250,000 key comparisons and about 250,000 item assignments to sort the list. Java Programming: From Problem Analysis to Program Design, Second Edition
Sequential Ordered Search public static int seqOrderedSearch(int[] list, int listLength, int searchItem) { int loc; //Line 1 boolean found = false; //Line 2 for (loc = 0; loc < listLength; loc++) //Line 3 if (list[loc] >= searchItem) //Line 4 { found = true; //Line 5 break; //Line 6 } if (found) //Line 7 if (list[loc] == searchItem) //Line 8 return loc; //Line 9 else//Line 10 return -1; //Line 11 else//Line 12 return -1; //Line 13 } Java Programming: From Problem Analysis to Program Design, Second Edition
Binary Search • Can only be performed on a sorted list. • Uses divide and conquer technique to search list. • If L is a sorted list of size n, to determine whether an element is in L, the binary search makes at most 2 * log2n + 2 key comparisons. • (Faster than a sequential search.) Java Programming: From Problem Analysis to Program Design, Second Edition
Binary Search Algorithm • Search item is compared with middle element of list. • If search item < middle element of list, search is restricted to first half of the list. • If search item > middle element of list, search is restricted to second half of the list. • If search item = middle element, search is complete. Java Programming: From Problem Analysis to Program Design, Second Edition
Binary Search Algorithm Determine whether 75 is in the list. Java Programming: From Problem Analysis to Program Design, Second Edition
Binary Search Algorithm public static int binarySearch(int[] list, int listLength, int searchItem) { int first = 0; int last = listLength - 1; int mid; boolean found = false; while (first <= last && !found) { mid = (first + last) / 2; if (list[mid] == searchItem) found = true; else if (list[mid] > searchItem) last = mid - 1; else first = mid + 1; } if (found) return mid; else return –1; } //end binarySearch Java Programming: From Problem Analysis to Program Design, Second Edition
Vectors • The classVector can be used to implement a list. • Unlike an array, the size of a Vector object can grow/shrink during program execution. • You do not need to worry about the number of data elements in a vector. Java Programming: From Problem Analysis to Program Design, Second Edition
Members of the classVector Java Programming: From Problem Analysis to Program Design, Second Edition
Members of the classVector Java Programming: From Problem Analysis to Program Design, Second Edition
Members of the classVector Java Programming: From Problem Analysis to Program Design, Second Edition
Members of the classVector Java Programming: From Problem Analysis to Program Design, Second Edition
Vectors • Every element of a Vector object is a reference variable of the type Object. • To add an element into a Vector object: • Create appropriate object. • Store data into object. • Store address of object holding data into Vector object element. Java Programming: From Problem Analysis to Program Design, Second Edition
Vectors Vector<String> stringList = new Vector<String>(); stringList.addElement("Spring"); stringList.addElement("Summer"); stringList.addElement("Fall"); stringList.addElement("Winter"); Java Programming: From Problem Analysis to Program Design, Second Edition
Programming Example: Election Results • Input: Two files • File 1: Candidates’ names • File 2: Voting data • Voting data format: • candidate_name region# number_of_votes_for_this_candidate Java Programming: From Problem Analysis to Program Design, Second Edition
Programming Example: Election Results • Output: Election results in a tabular form. • Each candidate’s name. • Number of votes each candidate received in each region. • Total number of votes each candidate received. Java Programming: From Problem Analysis to Program Design, Second Edition
Programming Example:Election Results (Solution) The solution includes: • Reading the candidates’ names into the array candidateName. • A two-dimensional array consisting of the votes by region. • An array consisting of the total votes parallel to the candidateName array. Java Programming: From Problem Analysis to Program Design, Second Edition
Programming Example:Election Results (Solution) • Sorting the array candidatesName. • Processing the voting data. • Calculating the total votes received by each candidate. • Outputting the results in tabular form. Java Programming: From Problem Analysis to Program Design, Second Edition
Programming Example: Election Results Java Programming: From Problem Analysis to Program Design, Second Edition
Programming Example: Election Results Java Programming: From Problem Analysis to Program Design, Second Edition
Additional String Methods Java Programming: From Problem Analysis to Program Design, Second Edition
Additional String Methods Java Programming: From Problem Analysis to Program Design, Second Edition
Additional String Methods Java Programming: From Problem Analysis to Program Design, Second Edition
Additional String Methods Java Programming: From Problem Analysis to Program Design, Second Edition
Effects of Some String Methods Java Programming: From Problem Analysis to Program Design, Second Edition
Programming Example: Pig Latin Strings • If string begins with a vowel, “-way” is appended to it. • If first character is not a vowel: • Add “-” to end. • Rotate characters until the first character is a vowel. • Append “ay.” • Input: String • Output: String in pig Latin Java Programming: From Problem Analysis to Program Design, Second Edition
Programming Example: Pig Latin Strings (Solution) • Methods: isVowel, rotate, pigLatinString • Use methods to: • Get the string (str). • Find the pig Latin form of str by using the method pigLatinString. • Output the pig Latin form of str. Java Programming: From Problem Analysis to Program Design, Second Edition
Programming Example: Pig Latin Strings (Sample Runs) Java Programming: From Problem Analysis to Program Design, Second Edition
Chapter Summary • Lists • Searching lists: • Sequential searching • Sequential searching on an order list • Binary search • Sorting lists: • Bubble sort • Selection sort • Insertion sort Java Programming: From Problem Analysis to Program Design, Second Edition
Chapter Summary • Programming examples • The classVector • Members of the classVector • The classString • Additional methods of the classString Java Programming: From Problem Analysis to Program Design, Second Edition