java实现快速排序
/**
*
* 方法描述: 快速排序
* 实现原理:
* 1、初始将数组a头部赋值给变量x
* 2、从数组尾部往前遍历,若查找到比x值小的值则将该值赋值到数组头部位置并记下比x值小的数组位置j
* 3、从数组头部往后遍历至j,若查找到比x值大的值将该值赋给a[j]并记下位置i
* 4、若i<j将数组a[i~j]重复2,3步
* 5、将x值赋给a[i]或者a[j]
* 6、将a[头部~i-1]和a[i+1~尾部]进行递归
* @param a 数组
* @param l 数组尾部
* @param r 数组尾部
* @author 钟良健
*/
public static void sort(int a[],int l,int r) {
if(l<r){
int i=l;
int j=r;
int x=a[i];
while(i<j){//循环结束后x左边的值比x值小,x值右边的值比x值大
while(i<j&&x<=a[j])//从右往左遍历
j--;
if(i<j)
a[i]=a[j];
while(i<j&&a[i]<=x)//从左往右遍历
i++;
if(i<j)
a[j]=a[i];
}
a[i]=x;//循环一遍结束
sort(a,l,i-1);
sort(a,i+1,r);
}
}
/**
*
* 方法描述: 测试
* @param args
* @author 钟良健
*/
public static void main(String[] args) {
int a[] = {5,4,3,2,1};
sort(a,0,a.length-1);
for (int k=0;k<a.length;k++){
System.out.printf("--->"+a[k]);
}
}