package sorting;标签:right,int,while,算法,数组,quickSorting,排序,快速,left From: https://www.cnblogs.com/sumiture/p/16846973.html
public class Quick{
/*双指针,设置两个参数,left和right,分别从左到右边寻找第一个大于a[0](数组的第一个元素)的值,从右到左寻找第一个
小于i的值,并进行交换位置。当left和right的值不相等的时候,继续寻找,当相等的时候,结束循环,并把a[0]的值和a[i]替换。
在分别把i左边的数组和右边的数组快速排序(递归)
* */
public static void main(String[] args) {
int a[] = {5,7,9,8,6,10,12,21,2,1,78,4} ; //数组a[]
quickSorting(a,0,a.length-1);
for (int i : a) {
System.out.print(i+" ") ; //输出数组
}
}
private static void quickSorting(int[] a, int left, int right) {
if ( left > right ) {
return;
}
int i = left;
int j = right;
int base = a[left];
while (i != j) {
while ( a[j]>= base&&i<j) {
j--;
}
while ( a[i] <= base&&i<j) {
i++;
}
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
a[left] = a[i];
a[i] = base;
quickSorting(a,left,i-1);
quickSorting(a,i+1,right);
}
}