快速排序法:
采用了递归排序,采用的思想就是左边的值要比temp小,右边的值要比temp大,本算法,我把两个函数都分开写了,递归算法,以及递归去查找中间的partition;
注意快排用到了递归的思想,而递归的思想,前提是要知道这个递归的终止条件和递归的函数
错误点:主要是right--; left++;
class Solution {
public int[] sortArray(int[] nums) {
quicksort(nums,0,nums.length-1);
return nums;
}
public int[] quicksort(int[] arr,int low,int high){
if(low<high){
int i=partition(arr,low,high);
quicksort(arr,low,i-1);
quicksort(arr,i+1,high);
}
return arr;
}
public int partition(int[] arr,int low,int high){
int temp = arr[low];
while(low<high){
while(low<high){
if(arr[high]<temp){
break;
}
high--;
}
arr[low] = arr[high];
while(low<high){
if(arr[low]>temp){
break;
}
low++;
}
arr[high] = arr[low];
}
arr[low] =temp;
return low;
}
}