原理:选第一个为基准并为哨兵i,最后一个为哨兵j。每次从j向左找比基准小的数就停下来,然后i向右找大的,找到之后把arr[i]和arr[j]互换,当i和j相遇时位置为x,把基准和arr[x]互换。然后就分开两半,然后选两半的第一个为基准并为i,最后一个为j,重复上述步骤。参考:https://blog.youkuaiyun.com/qq_26122557/article/details/79458649
//快速排序
class Main {
public static void main(String[] args) {
//一次快速排序
int arr[]=new int[]{6,1,2,7,9,3,4,5,10,8};
int arr2[]=quickSort(arr,0,arr.length-1);
for(int i=0;i<arr2.length;i++){
System.out.println(arr2[i]);
}
}
public static int[] quickSort(int arr[],int low,int high){
int pop;
if(low<high){
pop=quickPass(arr,low,high);
quickSort(arr,0,pop-1);
quickSort(arr,pop+1,high);
}
return arr;
}
public static int quickPass(int arr[],int low,int high){
int temp=arr[low];
while(low<high){
while(low<high&&arr[high]>=temp){
high--;
}
if(low<high){
arr[low]=arr[high];
low++;
}
while(low<high&&arr[low]<temp){
low++;
}
if(low<high){
arr[high]=arr[low];
high--;
}
}
arr[low]=temp;
return low;
}
}