分治法,分而治之,基本思路:分,解,和。
初探分治之快速排序。
public class _DividedConquer {
static int[] iarr;
public static void main(String[] args) {
// TODO Auto-generated method stub
iarr=new int[]{6,4,5,3,1,2};
quick(0, iarr.length-1);
for(int i:iarr)
{
System.out.print(i+" ");
}
}
static void quick(int p,int r)
{
if(p<r)
{
int q=part(p,r);
quick( p, q-1);
quick( q+1, r);
}
}
static int part(int p,int r)
{
int x=iarr[r];
int i=p-1;
for(int j=p;j<r;j++)
{
if(iarr[j]<x)
{
i++;
int tmp=iarr[i];
iarr[i]=iarr[j];
iarr[j]=tmp;
}
}
int tmp=iarr[i+1];
iarr[i+1]=iarr[r];
iarr[r] =tmp;
return i+1;
}
}