Chapter 13 Sorting and Searching Modified by Prem
Chapter 13 Sorting and Searching Modified by Prem Uppuluri Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Chapter Objectives • Examine the linear search and binary search algorithms • Examine several sorting algorithms, including: – – – selection sort insertion sort bubble sort quick sort merge sort • Discuss the complexity of these algorithms Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Searching • Searching is the process of finding a target element among a group of items (the search pool), or determining that it isn't there • This requires repetitively comparing the target to candidates in the search pool • An efficient sort performs no more comparisons than it has to • The size of the search pool is a factor Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
The Comparable Interface • We want to define the algorithms such that they can search any set of objects • Therefore we will search objects that implement the Comparable interface • It contains one method, compare. To, which is designed to return an integer that specifies the relationship between two objects: obj 1. compare. To(obj 2) • This call returns a number less than, equal to, or greater than 0 if obj 1 is less than, equal to, or greater than obj 2, respectively Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
The Comparable Interface • All of the methods presented in this chapter are part of the Sortingand. Searching class • This class makes use of the generic type T • For this class, we make the further distinction that T extends Comparable public class Sortingand. Searching<T extends Comparable> Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Linear Search • A linear search simply examines each item in the search pool, one at a time, until either the target is found or until the pool is exhausted • This approach does not assume the items in the search pool are in any particular order • We just need to be able to examine each element in turn (in a linear fashion) • It's fairly easy to understand, but not very efficient Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
FIGURE 11. 1 A linear search Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
linear. Search Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Binary Search • If the search pool is sorted, then we can be more efficient than a linear search • A binary search eliminates large parts of the search pool with each comparison • Instead of starting the search at one end, we begin in the middle • If the target isn't found, we know that if it is in the pool at all, it is in one half or the other • We can then jump to the middle of that half, and continue similarly Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
FIGURE 11. 2 A binary search Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Binary Search • For example, find the number 29 in the following sorted list of numbers: 8 15 22 29 36 54 55 61 70 73 88 • Compare the target to the middle value 54 • We now know that if 29 is in the list, it is in the front half of the list • With one comparison, we've eliminated half of the data • Then compare to 22, eliminating another quarter of the data, etc. Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Binary Search • A binary search algorithm is often implemented recursively • Each recursive call searches a smaller portion of the search pool • The base case of the recursion is running out of viable candidates to search, which means the target is not in the search pool • At any point there may be two "middle" values, in which case either could be used Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
binary. Search Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Comparing Search Algorithms • On average, a linear search would examine n/2 elements before finding the target • Therefore, a linear search is O(n) • The worst case for a binary search is (log 2 n) comparisons • A binary search is a logarithmic algorithm • It has a time complexity of O(log 2 n) • But keep in mind that the search pool must be sorted • For large n, a binary search is much faster Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Sorting • Sorting is the process of arranging a group of items into a defined order based on particular criteria • Many sorting algorithms have been designed • Sequential sorts require approximately n 2 comparisons to sort n elements • Logarithmic sorts typically require nlog 2 n comparisons to sort n elements Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Sorting • Let's define a generic sorting problem that any of our sorting algorithms could help solve • As with searching, we must be able to compare one element to another Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Listing 11. 1 Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Listing 11. 1 (cont. ) Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Listing 11. 2 Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Listing 11. 2 (cont. ) Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Selection Sort • Selection sort orders a list of values by repetitively putting a particular value into its final position • More specifically: – – – find the smallest value in the list switch it with the value in the first position find the next smallest value in the list switch it with the value in the second position repeat until all values are in their proper places Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
FIGURE 11. 3 Illustration of selection sort processing Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
selection. Sort Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Insertion Sort • Insertion sort orders a list of values by repetitively inserting a particular value into a sorted subset of the list • More specifically: – consider the first item to be a sorted sublist of length 1 – insert the second item into the sorted sublist, shifting the first item if needed – insert the third item into the sorted sublist, shifting the other items as needed – repeat until all values have been inserted into their proper positions Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
FIGURE 11. 4 Illustration of insertion sort processing Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
insertion. Sort Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Bubble Sort • Bubble sort orders a list of values by repetitively comparing neighboring elements and swapping their positions if necessary • More specifically: – scan the list, exchanging adjacent elements if they are not in relative order; this bubbles the highest value to the top – scan the list again, bubbling up the second highest value – repeat until all elements have been placed in their proper order Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
bubble. Sort Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Comparing Sorts • We've seen three sorts so far: – selection sort – insertion sort – bubble sort • They all use nested loops and perform approximately n 2 comparisons • They are relatively inefficient • Now we will turn our attention to more efficient sorts Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Quick Sort • Quick sort orders a list of values by partitioning the list around one element, then sorting each partition • More specifically: – choose one element in the list to be the partition element – organize the elements so that all elements less than the partition element are to the left and all greater are to the right – apply the quick sort algorithm (recursively) to both partitions Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Quick Sort • The choice of the partition element is arbitrary • For efficiency, it would be nice if the partition element divided the list roughly in half • The algorithm will work in any case, however • We will divide the work into two methods: – quick. Sort – performs the recursive algorithm – find. Partition – rearranges the elements into two partitions Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
quick. Sort Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
find. Partition Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
find. Partition Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
find. Partition Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Merge Sort • Merge sort orders a list of values by recursively dividing the list in half until each sub-list has one element, then recombining • More specifically: – divide the list into two roughly equal parts – recursively divide each part in half, continuing until a part contains only one element – merge the two parts into one sorted list – continue to merge parts as the recursion unfolds Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
FIGURE 11. 5 The decomposition of merge sort Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
FIGURE 11. 6 The merge portion of the merge sort algorithm Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
merge. Sort Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
merge. Sort Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Efficiency of quick. Sort and merge. Sort • Both quick. Sort and merge. Sort use a recursive structure that takes log 2 n processing steps to decompose the original list into lists of length one • At each step, both algorithms either compare or merge all n elements • Thus both algorithms are O(nlogn) Copyright © Pearson Education. Publishing as Pearson Addison-Wesley Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
- Slides: 41