Java实现递归的快速排序
public class Test {
public static void main(String[] args) {
int[] array = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8};
System.out.println("排序前:");
printArray(array);
System.out.println("排序后:");
printArray(array);
}
/*
* getIndex()方法用于获取检索
*/
public static int getIndex(int[] array, int left, int right) {
//以数组最左端的数为基准flag
int flag = array[left];
while (left < right){
//右指针从数组的右端往左扫描,直到找到<flag的数
while (left < right && array[right] > flag )
right--;
//找到了<flag的数,将该数放到left位置上
array[left] = array[right];
//左指针从数组的左端往右扫描,直到找到>flag的数
while (left < right && array[left] <=flag)
left++;
//找到了>flag的数,将该数放到right位置上
array[right] = array[left];
}
//此时left左端的数都比flag小,left右端的数都比flag大,最后将flag放到left位置上。
array[left] = flag;
return left;
}
/*
* 递归调用实现快速排序
*/
public static void quickSort(int[]array, int left, int right) {
if (left < right) {
int index = getIndex(array, left, right);
quickSort(array, 0, index);
quickSort(array, left + 1, right);
}
}
/*
* foreach遍历数组
*/
public static void printArray(int[] array) {
for (int i : array) {
System.out.print(i + " ");
}
System.out.println();
}
}
运行结果: