@Test//快速排序
public void test(){
int[] nums = {12,23,9,6,34,54,21,43,77,45,45,66,734,23,11,22,1,3,4,6};
go(0,nums.length-1);
System.out.println("快速排序:"+Arrays.toString(nums));
}
public void go(int left, int right){
//终止递归的条件
if(left>=right)return;
//记录初始的头尾
int lt = left;
int rt = right;
int key = nums[left];
while(left<right){
//从后半部分向前扫描
while(left<right&&nums[right]>=key) right--;
//思考一下这里为什么可以是赋值,而不是交换
nums[left] = nums[right];
//从前半部分向后扫描
while(left<right&&nums[left]<=key) left++;
nums[right] = nums[left];
}
nums[left] = key;
//递归继续排序左右部分
go(lt,left-1);
go(left+1,rt);
}
