public static void main(String[] args) {
int[] arr = {1, 3, 6, 56, 17, 32, 2, 8, 7, 11, 46,10};
int left = 0;
int right = arr.length-1;
sort(arr,left,right);
Arrays.stream(arr).forEach(x -> System.out.print(x + ","));
}
public static void sort(int[] arr, int left, int right) {
if (left >= right) {
return;
}
int base = arr[right];
int b=right;
while (left != right) {
//从左找到比基数大的数
while (arr[left] <= base && left < right) {
left++;
}
//从右找到比基数小的数
while (arr[right] >= base && left < right) {
right--;
}
// 交换指针停止位置的值
if (left < right) {
int tem = arr[left];
arr[left] = arr[right];
arr[right] = tem;
}
}
arr[b]=arr[left];
arr[left]=base;
sort(arr,0,left-1);
sort(arr,left+1,b);
}