变量:
l、r 、privot、temp
思路(递归):
确定一个privot.
两个指针指向两端
左面大的和右面小的交换顺序
注意(一定是从r开始找小于privot的元素)
代码:
import java.util.Arrays;
public class Queue8 {
public static void main(String[] args) {
int[] arr = {8, 9, 1, 7, 2, 3, 5, 4, 6, 0};
sort(arr,0,arr.length-1);
System.out.print(Arrays.toString(arr));
}
public static void sort(int[] arrays, int left, int right) {
// if(left >= right) {
// return;
// }
// int l = left;
// int r = right;
// int pivot = arrays[left];
// int temp = 0;
// while(l < r) {
// while(pivot <= arrays[r] && l < r) {
// r--;
// }
// while(pivot >= arrays[l] && l < r) {
// l++;
// }
// if(l <= r) {
// temp = arrays[r];
// arrays[r] = arrays[l];
// arrays[l] = temp;
// }
// }
// arrays[left] = arrays[l];
// arrays[l] = pivot;
// sort(arrays, left, l - 1);
// sort(arrays, l + 1, right);
if(left > right) {
return;
}
int l = left;
int r = right;
int privot = arrays[left];
int temp = 0;
while(l < r) {
while(arrays[r] >= privot && l < r) {
r--;
}
while(arrays[l] <= privot && l < r) {
l++;
}
if(l <= r) {
temp = arrays[r];
arrays[r] = arrays[l];
arrays[l] = temp;
}
}
arrays[left] = arrays[l];
arrays[l] = privot;
sort(arrays, left, l - 1);
sort(arrays, l + 1, right);
}
}