以下是快速排序的一段完整的Java代码,如有不完整地方可补充。
import java.util.Arrays;
/例如 5,2,7,4,6,1,9
排序过程:
5,2,1,4,6,7,9
4,2,1,5,6,7,9
1,2,4,5,6,7,9
1,2,4,5,6,7,9/
public class partition {
public static void main(String args[]) {
int a[]=new int[] {5,2,7,4,6,1,9};
qSort(a,0,a.length-1);
System.out.println(Arrays.toString(a));
}
private static void qSort(int a[],int p,int r) {
if(p<r) {
int q=part(a,p,r);//寻找划分元下标
qSort(a,p,q-1);//对划分元左边进行排序
qSort(a,q+1,r);//对划分元右边进行排序
}
}
public static int part(int a[],int p,int r) {
int left=p+1,right=r;
int key=a[p];
while(true) {
//往右寻找比key大的元素
while(a[left]<key&&left<r) {
++left;
}
//往左寻找比key小的元素
while(a[right]>key) {
–right;
}
//如果左下标大于等于右下标,跳出循环
if(left>=right) break;
//left<right,两元素值交换
int temp=a[left];
a[left]=a[right];
a[right]=temp;
}
//起始元素和右下标元素交换
a[p]=a[right];
a[right]=key;
return right;
}
}