源代码:
import java.util.Scanner;
/**
*
* @author liuzhenzhao
*/
public class MyQuickSort {
/**
* @param args the command line arguments
*/
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[]的最右端元素为主元*/
int x=A[r];//选择主元
int i=p-1;
for(int j=p;j<=r-1;j++)
{
if(A[j]<=x)
{
//A[p...i]<A[r]
i++;
//exchange A[j] with A[i]
int temp=A[j];
A[j]=A[i];
A[i]=temp;
}
//当A[j]>x时进入下一轮循环,j++
}
//exchange A[r] with A[i+1]
int temp=A[i+1];
A[i+1]=A[r];
A[r]=temp;
return i+1;
}
public static void main(String[] args) {
//main方法里为测试程序
// TODO code application logic here
Scanner in=new Scanner(System.in);
int len=0;
if(in.hasNextInt())
{
len=in.nextInt();
}
int []array=new int[len];
for(int i=0;i<len;i++)
{
if(in.hasNextInt())
array[i]=in.nextInt();
}
QuickSort(array,0,len-1);
System.out.println("after quicksort:");
for(int i=0;i<len;i++)
{
System.out.print(array[i]+" ");
}
System.out.println("");
}
}
运行结果: