封装版
public class QuickSort {
public void quickSort(int[] arr) {
int left = 0;
int right = arr.length - 1;
quickSort(arr, left, right);
}
public void quickSort(int[] arr, int left, int right) {
int pivot;
if (left < right) {
pivot = checkPivot(arr, left, right);
quickSort(arr, left, pivot - 1);
quickSort(arr, pivot + 1, right);
}
}
public int checkPivot(int[] arr, int left, int right) {
int pivot = arr[left];
while (left < right) {
while (arr[right] >= pivot && left < right) right--;
arr[left] = arr[right];
while (arr[left] <= pivot && left < right) left++;
arr[right] = arr[left];
}
arr[left] = pivot;
return left;
}
}
简化版
void quickSort(int[] arr, int start, int end) {
int left = start, right = end;
if (left < right) {
int temp = arr[left];
while (left < right) {
while (left < right && arr[right] >= temp) right--;
if (left < right) arr[left] = arr[right];
while (left < right && arr[left] < temp) left++;
if (left < right) arr[right] = arr[left];
}
arr[left] = temp;
quickSort(arr, start, left - 1);
quickSort(arr, left + 1, end);
}
}