chapter 14 searching and sorting l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Chapter 14: Searching and Sorting PowerPoint Presentation
Download Presentation
Chapter 14: Searching and Sorting

Loading in 2 Seconds...

play fullscreen
1 / 49

Chapter 14: Searching and Sorting - PowerPoint PPT Presentation


  • 159 Views
  • Uploaded on

Chapter 14: Searching and Sorting. J ava P rogramming: 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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
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

Chapter 14: Searching and Sorting

JavaProgramming:

From Problem Analysis to Program Design,

Fourth Edition

chapter objectives
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 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
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

search5
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
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
Bubble Sort

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

bubble sort8
Bubble Sort

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

bubble sort9
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 sort10
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
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 sort12
Selection Sort

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

selection sort13
Selection Sort

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

selection sort14
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 sort15
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
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 sort17
Insertion Sort

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

insertion sort18
Insertion Sort

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

insertion sort19
Insertion Sort

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

insertion sort20
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 sort21
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
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
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
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 algorithm25
Binary Search Algorithm

Determine whether 75 is in the list.

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

binary search algorithm26
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
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 class vector
Members of the classVector

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

members of the class vector29
Members of the classVector

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

members of the class vector30
Members of the classVector

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

slide31

Members of the classVector

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

vectors32
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

slide33

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
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 results35
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
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 solution37
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 results38
Programming Example: Election Results

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

programming example election results39
Programming Example: Election Results

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

additional string methods
Additional String Methods

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

slide41

Additional String Methods

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

slide42

Additional String Methods

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

additional string methods43
Additional String Methods

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

effects of some string methods
Effects of Some String Methods

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

programming example pig latin strings
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
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
Programming Example: Pig Latin Strings (Sample Runs)

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

chapter summary
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 summary49
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