package textbookcode;
import java.util.*;
public class QUICKSORT{
public static void main(String [] args){
Scanner in= new Scanner(System.in);
System.out.println("请输入数组大小");
int l=in.nextInt();
int A[]=new int[l];
System.out.println("请依次输入数组中的数");
for(int k=0;k<l;k++){
A[k]=in.nextInt();
}
quickSort(A,0,l-1);
for(int k=0;k<l;k++){
System.out.print(A[k]+" ");
}
}
public static void quickSort(int A[],int p,int r){
if(p<r){
int q=partition(A,p,r);
quickSort(A,p,q-1);
quickSort(A,q+1,r);
}
}
public static int partition(int A[],int p,int r){
/*
* 找一个作为比较的标准数,例如最后一个数A[r],
* 通过循环比较后,比A[r]小的数放在数组的左边,
* 大的数放在右边。
*/
int x=A[r];
int i=p-1;
for(int j=p;j<=r-1;j++){
if(A[j]<=x){
i++;
int temp;
temp=A[j];
A[j]=A[i];
A[i]=temp;
}
}
int t=A[i+1];
A[i+1]=A[r];
A[r]=t;
return i+1;
}
}
运行过程以2 8 7 1 3 5 6 4为例: