1: // Created by Frank M. Carrano and Tim Henry. 2: // Copyright (c) 2013 __Pearson Education__. All rights reserved. 4: // Listing 11-5. 6: template<class ItemType> 8: /** Sorts an array into ascending order. Uses the quick sort with 9: median-of-three pivot selection for arrays of at least MIN_SIZE 10: entries, and uses the insertion sort for other arrays. 11: @pre theArray[first..last] is an array. 12: @post theArray[first..last] is sorted. 13: @param theArray The given array. 14: @param first The first element to consider in theArray. 15: @param last The last element to consider in theArray. */ 16: void quickSort(ItemType theArray[], int first, int last) 17: { 18: if (last - first + 1 < MIN_SIZE) 19: { 20: insertionSort(theArray, first, last); 21: } 22: else 23: { 24: // Create the partition: S1 | Pivot | S2 25: int pivotIndex = partition(theArray, first, last); 26: 27: // Sort subarrays S1 and S2 28: quickSort(theArray, first, pivotIndex - 1); 29: quickSort(theArray, pivotIndex + 1, last); 30: } // end if 31: } // end quickSort