//Author: ScottChiang
//Date: June 2012
package com.test.sort;
import java.util.Random;
public class QuickSort {
public static void main(String[] args) {
//随机产生一个数组
Random random = new Random();
int countNumbers = random.nextInt(17) + 3 ;
int []randomArray = new int[countNumbers];
for(int i=0; i< countNumbers; i++){
randomArray[i] = random.nextInt(99)+1;
}
//打印排序前的数组
printArray(randomArray);
// 快速排序
quickSort(randomArray, 0, randomArray.length - 1);
// 打印排序后的数组
printArray(randomArray);
/*
int []myarray = {49,38, 65, 97, 76, 13, 27};
//打印排序前的数组
printArray(myarray);
// 快速排序
quickSort(myarray, 0, myarray.length - 1);
// 打印排序后的数组
printArray(myarray);
*/
}
public static void quickSort(int array[], int from, int to){
if(from < to){
//System.out.println("排序前");
//printPartArray(array, from, to);
int pivot = array[to];
int i = from - 1;
int j = to + 1;
while(true){
while(array[++i] < pivot);
while(array[--j] > pivot);
if(i >= j)
break;
int tempValue = array[i];
array[i] = array[j];
array[j] = tempValue;
}
//System.out.println("排序后");
//printPartArray(array, from, to);
quickSort(array, from, i - 1);//将排序前,小于等于pivot的数,放到左集合再排序
quickSort(array, j + 1, to);//将排序后,大于pivot的数,放到右集合再排序
}
}
public static void printArray(int []arr){
for(int temp:arr){
System.out.print(temp+ " ");
}
System.out.println("");
}
public static void printPartArray(int []arr, int f, int t){
for(int i = f; i<= t; i++){
System.out.print(arr[i]+" ");
}
System.out.println("");
}
}