public class Main {
public static void main(String[] args) {
int arr[]={3,2,5,7,9,6};
quicksort(arr,0,arr.length-1);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
public static void quicksort(int []arr,int p,int r){
if(p<=r){
int q=partition(arr,p,r);
quicksort(arr,0,q-1);
quicksort(arr,q+1,r);
}
}
private static int partition(int[] arr, int p, int r) {
int pivot=arr[p];//主元
int sp=p+1;//扫描指针
int bigger=r;//右侧的指针
while (sp<=bigger) {
if(arr[sp]<=pivot){ //如果扫描点的数比元主小 则扫描点向有移动
sp++;
}else{ //如果扫描点的数比元主大,就交换 ,右侧指针向左移动
int temp=arr[sp];
arr[sp]=arr[bigger];
arr[bigger]=temp;
bigger--;
}
}
//最后元主和右边扫描点交换
int temp=arr[p];
arr[p]=arr[bigger];
arr[bigger]=temp;
return bigger;
}
}