3833N/A * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. 0N/A * Redistribution and use in source and binary forms, with or without 0N/A * modification, are permitted provided that the following conditions 0N/A * - Redistributions of source code must retain the above copyright 0N/A * notice, this list of conditions and the following disclaimer. 0N/A * - Redistributions in binary form must reproduce the above copyright 0N/A * notice, this list of conditions and the following disclaimer in the 0N/A * documentation and/or other materials provided with the distribution. 2362N/A * - Neither the name of Oracle nor the names of its 0N/A * contributors may be used to endorse or promote products derived 0N/A * from this software without specific prior written permission. 0N/A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 0N/A * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 0N/A * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 0N/A * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 0N/A * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 0N/A * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 0N/A * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 0N/A * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 0N/A * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 0N/A * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 0N/A * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 4378N/A * This source code is provided to illustrate the usage of a given feature 4378N/A * or technique and has been deliberately simplified. Additional steps 4378N/A * required for a production-quality application, such as security checks, 4378N/A * input validation and proper error handling, might not be present in 0N/A * A quick sort demonstration algorithm 0N/A * @author James Gosling 0N/A * @author Kevin A. Smith 0N/A * A version of pause() that makes it easier to ensure that we pause 0N/A * exactly the right number of times. 3833N/A /** This is a generic version of C.A.R Hoare's Quick Sort 3833N/A * algorithm. This will handle arrays that are already 3833N/A * sorted, and arrays with duplicate keys.<BR> 3833N/A * If you think of a one dimensional array as going from 3833N/A * the lowest index on the left to the highest index on the right 3833N/A * then the parameters to this function are lowest index or 3833N/A * left and highest index or right. The first time you call 3833N/A * this function it will be with the parameters 0, a.length - 1. 3833N/A * @param a an integer array 3833N/A * @param lo0 left boundary of array partition 3833N/A * @param hi0 right boundary of array partition 3833N/A /* Arbitrarily establishing partition element as the midpoint of 3833N/A // loop through the array until indices cross 3833N/A /* find the first element that is greater than or equal to 3833N/A * the partition element starting from the left Index. 3833N/A /* find an element that is smaller than or equal to 3833N/A * the partition element starting from the right Index. 3833N/A // if the indexes have not crossed, swap 3833N/A /* If the right index has not reached the left side of array 3833N/A * must now sort the left partition. 3833N/A /* If the left index has not reached the right side of array 3833N/A * must now sort the right partition.