《排序算法》1. 快速排序

28 阅读1分钟

快速排序

基本思想

  • 选定中心轴(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);

}