![Page 1: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/1.jpg)
Faster Sorting Methods
Chapter 12
Slides by Steve ArmstrongLeTourneau University
Longview, TX2007,Prentice Hall
![Page 2: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/2.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Chapter Contents• Merge Sort
Merging Arrays Recursive Merge Sort The Efficiency of Merge Sort Iterative Merge Sort Merge Sort in the Java Class Library
![Page 3: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/3.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Chapter ContentsQuick Sort
The Efficiency of Quick Sort Creating the Partition Java Code for Quick Sort Quick Sort in the Java Class Library
• Radix Sort Pseudocode for Radix Sort
• Comparing the Algorithms
![Page 4: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/4.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Merge Sort
• Divide an array into halves Sort the two halves Merge them into one sorted array
• Referred to as a divide and conquer algorithm This is often part of a recursive algorithm However recursion is not a requirement
![Page 5: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/5.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Merge Sort
Fig. 12-1 Merging two sorted arrays
into one sorted array.
![Page 6: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/6.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Merge Sort
Fig. 12-2 The major steps in a merge sort.
![Page 7: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/7.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Merge Sort
• View algorithms mergeSort merge which is used by mergeSort
• Trace steps of the algorithm in Figure 12-3 on next slide
![Page 8: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/8.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Merge Sort
Fig. 12-3 The effect of the recursive calls and the merges during a merge sort.
![Page 9: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/9.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Merge Sort Efficiency • Merge sort is O(n log n) in all cases
It's need for a temporary array is a disadvantage
• Merge sort in the Java Class Library The class Arrays has sort routines that
uses the merge sort for arrays of objects
![Page 10: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/10.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Merge Sort Efficiency
Fig. 12-4 A worst-case merge of two sorted arrays
![Page 11: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/11.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Quick Sort
• Divides the array into two pieces Not necessarily halves of the array An element of the array is selected as the pivot
• Elements are rearranged so that: The pivot is in its final position in sorted array Elements in positions before pivot are less than
the pivot Elements after the pivot are greater than the
pivot
![Page 12: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/12.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Quick Sort
• View Quick Sort algorithm
Fig. 12-5 A partition of an array during a quick sort.
![Page 13: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/13.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Quick Sort
• Quick sort is O(n log n) in the average case
• O(n2) in the worst case
• Worst case can be avoided by careful choice of the pivot
![Page 14: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/14.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Quick Sort
Fig. 12-6 A partition strategy for quick sort … continued→
![Page 15: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/15.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Quick Sort
Fig. 12-6 (ctd.) A partition strategy for quick sort.
![Page 16: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/16.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Quick Sort
Fig. 12-7 Median-of-three pivot selection: (a) the original array; (b) the array with its
first, middle, and last elements sorted
![Page 17: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/17.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Quick Sort
Fig. 12-8 (a) The array with its first, middle, and last elements sorted; (b) the array after
positioning the pivot and just before partitioning.
![Page 18: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/18.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Quick Sort• Quick sort rearranges the elements in an
array during partitioning process• After each step in the process
One element (the pivot) is placed in its correct sorted position
• The elements in each of the two sub arrays Remain in their respective subarrays
• View Java code for Quick Sort• Note sort methods in java.util for Arrays class
![Page 19: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/19.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Radix Sort
• Does not compare objects• Treats array elements as if they were
strings of the same length• Groups elements by a specified digit or
character of the string Elements placed into "buckets" which match
the digit (character)
• Originated with card sorters when computers used 80 column punched cards
![Page 20: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/20.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Radix Sort
Fig. 12-9 (a) Original array and buckets after first distribution; (b) reordered array and buckets after second
distribution … continued →
![Page 21: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/21.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Radix Sort
Fig. 12-9 (c) reordered array and buckets after third distribution; (d) sorted array
![Page 22: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/22.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Radix Sort
• View algorithm for Radix Sort
• Note Radix sort is O(n) Can only be used for certain kinds of data
![Page 23: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/23.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Comparing the Algorithms
Fig. 12-10 The time efficiency of various algorithms in Big Oh notation
![Page 24: Faster Sorting Methods Chapter 12 Slides by Steve Armstrong LeTourneau University Longview, TX 2007, Prentice Hall](https://reader036.vdocuments.mx/reader036/viewer/2022081511/56649d215503460f949f5fb8/html5/thumbnails/24.jpg)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Comparing the Algorithms
Fig. 12-11 A comparison of growth-rate functions as n increases.