//快速排序使用递归的方法排序,
import java.util.Arrays;
public class Quick {
public static void main(String[] args) {
int[] arr= {9,1,2,3,6,7,8,10,5,4};
quick(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
public static void quick(int arr[],int left,int right) {
//如果左边大于等于右边就会返回。
if(left>=right)
{
return;
}
//定义左边的游标i
int i=left;
//定义右边的游标j
int j=right;
//定义用于比较的值base
int base=arr[left];
//当左右两个游标没有相遇时,会一直执行
while(i!=j){
//当右边的游标没找的小于base的值,会一直执行,记得考虑=的情况
while(arr[j]>=base&&i<j) {
j--;
}
//当左边的游标没找的大于base的值,会一直执行,记得考虑=的情况
while(arr[i]<=base&&i<j) {
i++;
}
//两个游标处的值交换
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
//i=j时 ,让基础的值与i处的值交换
arr[left]=arr[i];
arr[i]=base;
//以i为分界点,进行递归。
quick(arr,left,i-1);
quick(arr,i+1,right);
}
}
02-18