Presentation is loading. Please wait.

Presentation is loading. Please wait.

Applications of Arrays (Searching and Sorting) and Strings

Similar presentations


Presentation on theme: "Applications of Arrays (Searching and Sorting) and Strings"— Presentation transcript:

1 Applications of Arrays (Searching and Sorting) and Strings
Java Programming: From Problem Analysis to Program Design, 3e Chapter 10 Applications of Arrays (Searching and Sorting) and Strings

2 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 class Vector Learn more about manipulating strings using the class String Java Programming: From Problem Analysis to Program Design, 3e

3 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, 3e

4 Search Necessary components to search a list After search completed
Array containing the list Length of the list Item for which you are searching After search completed If item found, report “success,” return location in array If item not found, report “failure” Java Programming: From Problem Analysis to Program Design, 3e

5 Search (continued) Suppose that you want to determine whether 27 is in the list First compare 27 with list[0]; that is, compare 27 with 35 Because list[0] ≠ 27, you then compare 27 with list[1] Because list[1] ≠ 27, you compare 27 with the next element in the list Because list[2] = 27, the search stops This search is successful Java Programming: From Problem Analysis to Program Design, 3e

6 Search (continued) Let’s now search for 10
The search starts at the first element in the list; that is, at list[0] Proceeding as before, we see that this time the search item, which is 10, is compared with every item in the list Eventually, no more data is left in the list to compare with the search item; this is an unsuccessful search Java Programming: From Problem Analysis to Program Design, 3e

7 Search (continued) Java Programming: From Problem Analysis to Program Design, 3e

8 Search (continued) Java Programming: From Problem Analysis to Program Design, 3e

9 Search (continued) Using a while (or a for) loop, the definition of the method seqSearch can also be written without the break statement as: Java Programming: From Problem Analysis to Program Design, 3e

10 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; that is, 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, that is, interchanged Java Programming: From Problem Analysis to Program Design, 3e

11 Bubble Sort Java Programming: From Problem Analysis to Program Design, 3e

12 Bubble Sort (continued)
Java Programming: From Problem Analysis to Program Design, 3e

13 Bubble Sort (continued)
Java Programming: From Problem Analysis to Program Design, 3e

14 Bubble Sort (continued)
It is known that for a list of length n, on average bubble sort makes n(n – 1) / 2 key comparisons and about n(n – 1) / 4 item assignments Therefore, if n = 1000, then to sort the list bubble sort makes about 500,000 key comparisons and about 250,000 item assignments Java Programming: From Problem Analysis to Program Design, 3e

15 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, 3e

16 Selection Sort (continued)
Java Programming: From Problem Analysis to Program Design, 3e

17 Selection Sort (continued)
Java Programming: From Problem Analysis to Program Design, 3e

18 Selection Sort (continued)
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, 3e

19 Selection Sort (continued)
It is known that for a list of length n, on an average selection sort makes n(n – 1) / 2 key comparisons and 3(n – 1) item assignments Therefore, if n = 1000, then to sort the list selection sort makes about 500,000 key comparisons and about 3000 item assignments Java Programming: From Problem Analysis to Program Design, 3e

20 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, 3e

21 Insertion Sort (continued)
Java Programming: From Problem Analysis to Program Design, 3e

22 Insertion Sort (continued)
Java Programming: From Problem Analysis to Program Design, 3e

23 Insertion Sort (continued)
Java Programming: From Problem Analysis to Program Design, 3e

24 Insertion Sort (continued)
public static void insertionSort(int[] list, int listLength) { int firstOutOfOrder, location; int temp; for (firstOutOfOrder = 1; firstOutOfOrder < listLength; 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, 3e

25 Insertion Sort (continued)
It is known that 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, then to sort the list, the insertion sort makes about 250,000 key comparisons and about 250,000 item assignments Java Programming: From Problem Analysis to Program Design, 3e

26 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, 3e

27 Binary Search Can only be performed on a sorted list
Uses divide and conquer technique to search list Java Programming: From Problem Analysis to Program Design, 3e

28 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 second half of the list If search item = middle element, search is complete Java Programming: From Problem Analysis to Program Design, 3e

29 Binary Search Algorithm (continued)
Determine whether 75 is in the list Java Programming: From Problem Analysis to Program Design, 3e

30 Binary Search Algorithm (continued)
Java Programming: From Problem Analysis to Program Design, 3e

31 Binary Search Algorithm (continued)
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; first = mid + 1; } if (found) return mid; return –1; } //end binarySearch Java Programming: From Problem Analysis to Program Design, 3e

32 Binary Search Algorithm (continued)
Java Programming: From Problem Analysis to Program Design, 3e

33 Binary Search Algorithm (continued)
Java Programming: From Problem Analysis to Program Design, 3e

34 Performance of the Binary Search
Java Programming: From Problem Analysis to Program Design, 3e

35 Performance of the Binary Search (continued)
Java Programming: From Problem Analysis to Program Design, 3e

36 Performance of the Binary Search (continued)
Suppose that L is a list of size Since  = 220, it follows that the while loop in binary search will have at most 21 iterations to determine whether an element is in L Every iteration of the while loop makes two key (that is, item) comparisons Java Programming: From Problem Analysis to Program Design, 3e

37 Performance of the Binary Search (continued)
To determine whether an element is in L, binary search makes at most 42 item comparisons On the other hand, on average, a sequential search will make 500,000 key (item) comparisons to determine whether an element is in L In general, if L is a sorted list of size n, to determine whether an element is in L, the binary search makes at most 2log2n + 2 key (item) comparisons Java Programming: From Problem Analysis to Program Design, 3e

38 Vectors The class Vector 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 vector Java Programming: From Problem Analysis to Program Design, 3e

39 Members of the class Vector
Java Programming: From Problem Analysis to Program Design, 3e

40 Members of the class Vector (continued)
Java Programming: From Problem Analysis to Program Design, 3e

41 Members of the class Vector (continued)
Java Programming: From Problem Analysis to Program Design, 3e

42 Members of the class Vector (continued)
Java Programming: From Problem Analysis to Program Design, 3e

43 Members of the class Vector (continued)
Java Programming: From Problem Analysis to Program Design, 3e

44 Vectors (continued) 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, 3e

45 Vectors (continued) 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, 3e

46 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, 3e

47 Programming Example: Election Results (continued)
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, 3e

48 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, 3e

49 Programming Example: Election Results (Solution) (continued)
The solution includes (continued): 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, 3e

50 Programming Example: Election Results
Java Programming: From Problem Analysis to Program Design, 3e

51 Programming Example: Election Results (continued)
Java Programming: From Problem Analysis to Program Design, 3e

52 Additional String Methods
Java Programming: From Problem Analysis to Program Design, 3e

53 Additional String Methods (continued)
Java Programming: From Problem Analysis to Program Design, 3e

54 Additional String Methods (continued)
Java Programming: From Problem Analysis to Program Design, 3e

55 Additional String Methods (continued)
Java Programming: From Problem Analysis to Program Design, 3e

56 Effects of Some String Methods
Java Programming: From Problem Analysis to Program Design, 3e

57 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, 3e

58 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, 3e

59 Programming Example: Pig Latin Strings (Sample Runs)
Java Programming: From Problem Analysis to Program Design, 3e

60 Chapter Summary Lists Searching lists Sorting 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, 3e

61 Chapter Summary (continued)
Programming examples The class Vector Members of the class Vector The class String Additional methods of the class String Java Programming: From Problem Analysis to Program Design, 3e


Download ppt "Applications of Arrays (Searching and Sorting) and Strings"

Similar presentations


Ads by Google