void quick(int[] arr, int left, int right){
if(left > right){
return;
}
//以基准数为分界限,将比基准线大的都移动到基准数的右边,将比基准数小的都移动到基准数的左边
//每次找到一对就交换位置,最后确定基准数的位置
int temp = arr[left], i = left, j = right;
while(i != j){
while(i < j && arr[j] >= temp){
//找到一个比基准数小的
j --;
}
while( i < j && arr[i] <= temp){
//找到一个比基准数大的
i ++;
}
if(i < j){
//交换比基准数小的,与基准数大的
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
//交换基准数的位置
arr[left] = arr[i];
arr[i] = temp;
quick(arr, left, i - 1);
quick(arr, i + 1, right);
}
void quick1(int[] arr, int left, int right){
if(left > right){
return;
}
int temp = arr[left], i = left, j = right;
while(i != j){
while(i < j && arr[j] >= temp){
//找到一个比基准数大的,将其移动到基准数的右边
j --;
}
arr[i] = arr[j];
while( i < j && arr[i] <= temp){
//找到一个比基准数小的移动到基准数的左边
i ++;
}
arr[j] = arr[i];
}
//交换基准数的位置
arr[i] = temp;
quick(arr, left, i - 1);
quick(arr, i + 1, right);
}