package com.test;
public class quickSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr={6,3,7,9,5,1,4,8};
quickSort(arr, 0, arr.length-1);
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
public static void quickSort(int[] arr,int left,int right){
//记住一定要先判断
if(right < left){
return;
}
//定义一个base
int base = arr[left];
//指向左边
int i = left;
//指向右边
int j = right;
while(i != j){
//从右往左开始检索比base小的
while(j > i && arr[j] >= base){
j--;
}
//从左往右检索比base大的
while(j > i &&arr[i] <= base){
i++;
}
//程序执行到这里,说明找到了比base大的,和比base小的。完了交换他俩的位置
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
//执行到i == j时,需要将arr[i]和base交换位置。这样在arr[i]之前的都是比base小的,之后的都是比base大的
arr[left] = arr[i];
arr[i] = base;
//执行完成后再排序左边的
quickSort(arr, left, i-1);
//执行完成后再排序右边的
quickSort(arr, j+1, right);
}
}