public class QuickSort{
public static void main(String []args){
//System.out.println("Hello World");
int[] arr = {6,1,2,7,9,3,4,5,10,8};
int start = 0;//左指针为0
int end = arr.length-1;//右指针为尾
sort(arr,start,end);
for(int m = 0; m
System.out.print(arr[m]+",");
}
}
//指定数组,左右指针
public static void sort(int[] arr, int start, int end){
int i = start;
int j = end;
int key = arr[i];//第一个数为key
//key=6
while(j>i){//右大于左时执行
//从后往前比较
//右大于左且数组中右的值大于等于key时执行---也就是找到小于key的位置
while(j>i&&arr[j]>=key) //如果没有比关键值小的,比较下一个,直到有比关键值小的交换位置,然后又从前往后比较
j--;
//右大于key
if(arr[j]<=key){
//arr的i与j交换位置
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
//从前往后比较
//右大于左且数组中左的值小于等于key时执行---也就是左大于key的位置
while(j>i&&arr[i]<=key)//如果没有比关键值大的,比较下一个,直到有比关键值大的交换位置
i++;
//左大于key
if(arr[i]>=key){
//a的i与j交换位置
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
//此时第一次循环比较结束,关键值的位置已经确定了。左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用
}
//i=j=5 start=0,end=9
//递归
if(i>start) sort(arr,start,i-1);//左边序列。第一个索引位置到关键值索引-1
if(j