class ArrayIns{
private int theArray[];
public ArrayIns(int nums[]){
theArray = nums; }
// 划分操作
public int partitionIt(int left, int right, long pivot){
int leftPtr = left - 1;//此处-1是为了防止最右端数据小于其他所有数据
//右指针一直向左移动并最终出现数组越界异常
int rightPtr = right;
while(true){
while(theArray[++leftPtr] < pivot);
while(rightPtr > 0 && theArray[--rightPtr] > pivot);
if(leftPtr >= rightPtr) break;
else swap(leftPtr, rightPtr);
}
swap(leftPtr, right);
return leftPtr;
}
public void swap(int dex1, int dex2){
int temp = theArray[dex1];
theArray[dex1] = theArray[dex2];
theArray[dex2] = temp;
}
public void quickSort(int num[]){
recQuickSort(0, num.length-1);
}
//在进行快速排序时,将子数列的最右端取出并作为枢纽。在对子序列排序完毕后
//和下标维leftPtr的数据交换。
public void recQuickSort(int left, int right){
if(right - left <= 0) return;
else{
int pivot = theArray[right];
int partition = partitionIt(left, right, pivot);
recQuickSort(left, partition-1);
recQuickSort(partition + 1, right);
}
}
}
交换枢纽位置