- By
**draco** - Follow User

- 159 Views
- Uploaded on

Download Presentation
## PowerPoint Slideshow about 'Chapter 14: Searching and Sorting' - draco

**An Image/Link below is provided (as is) to download presentation**

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript

### Chapter 14: Searching and Sorting

JavaProgramming:

From Problem Analysis to Program Design,

Fourth 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

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

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

Java Programming: From Problem Analysis to Program Design, Second Edition

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

Download Presentation

Connecting to Server..