快速排序
基本思想
- 选定中心轴(Privot)
- 将大于Privot的放在中心轴的右边
- 将小于Privot的放在中心轴的左边
- 分别对左右子序列重复进行操作
public void QuickSort(int arr[], int L, int R) {
if (L > R) {
return;
}
int left = L, right = R;
int pivot = arr[left];
while (left < right) {
while (left < right && arr[right] >= pivot) {
right--;
}
if (left < right) {
arr[left] = arr[right];
}
while (left < right && arr[left] <= pivot) {
left++;
}
if (left < right) {
arr[right] = arr[left];
}
if (left >= right) {
arr[left] = pivot;
}
}
QuickSort(arr, L, right - 1);
QuickSort(arr, right + 1, R);
}