package arithmetic;
public class QuickSort {
private static void QuickSort(String[] pData, int left, int right) {
int i, j;
int iTemp;
String middle, strTemp;
i = left;
j = right;
middle = pData[(left + right) / 2];
for(int x=0;x<pData.length;x++){
System.out.print(pData[x]+" ");
}
System.out.println();
do {
while ((pData[i].compareTo(middle) < 0) && (i < right))
i++;
while ((pData[j].compareTo(middle)) > 0 && (j > left))
j--;
System.out.println("swap:"+pData[i]+" "+pData[j]+" ------"+middle);
if (i <=j) {
strTemp = pData[i];
pData[i] = pData[j];
pData[j] = strTemp;
i++;
j--;
}
System.out.println();
for(int x=0;x<pData.length;x++){
System.out.print(pData[x]+" ");
}
System.out.println();
} while (i <= j);// 如果两边扫描的下标交错,就停止(完成一次)
System.out.println("i="+i+",j="+j);
if (left < j)
QuickSort(pData, left, j);
if (right > i)
QuickSort(pData, i, right);
}
public static void main(String[] args){
String[] a={"4","3","5","9","7","2","1","8","0","6"};
QuickSort(a,0,9);
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
}
}