/**
* 快速排序
* 时间复杂度:O(n^2)
* 空间复杂度:O(logn)
*/
public class QuickSort extends Sort{
public void quickSort(int[] nums, int start, int end){
if(start < end){
int mid = doSort(nums, start, end);
quickSort(nums, start, mid - 1);
quickSort(nums, mid + 1, end);
}
}
private int doSort(int[] nums, int left, int right) {
int temp = nums[left];
while(left < right){
while(left <right){
if(temp < nums[right]){
right--;
}else{
nums[left++] = nums[right];
break;
}
}
while(left < right){
if(temp > nums[left]){
left++;
}else{
nums[right--] = nums[left];
break;
}
}
}
nums[left] = temp;
return left;
}
}