原理:
先从数列中取出一个数作为基准数。分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
再对左右区间重复第二步,直到各区间只有一个数。
代码如下:
package eclipse_AAA;
public class kuaipai {
public static void main(String[] args) {
int[] D = {5,64,89,67,41,39,7,84,5,1,63,15,4};
C(D, 0, D.length - 1);
for (int i = 0; i < D.length; i++) {
System.out.print(D[i]);
}
}
public static void C(int[] D, int left, int right) {
if (left < right) {
int temp = BBB(D, left, right);
C(D, left, temp - 1);
C(D, temp + 1, right);
}
}
public static int BBB(int[] D, int left, int right) {
int temp = D[left];
while (left < right) {
while (left < right && D[right] >= temp) {
right--;
}
D[left] = D[right];
while (left < right && D[left] <= temp) {
left++;
}
D[right] = D[left];
}
D[left] = temp;
return left;
}
}