任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。
public static int pivot(int [] nums,int start, int end){
int temp = nums[start];
while(start < end){
while(start < end && nums[end] >= temp){
end--;
}
nums[start] = nums[end];
while(start < end && nums[start] <= temp){
start++;
}
nums[end] = nums[start];
}
nums[start] = temp;
return start;
}
public static void quick(int [] nums, int low, int high){
if(low < high){
int piv = pivot(nums,low,high);
quick(nums,low,piv - 1);
quick(nums,piv + 1,high);
}
}