• [x] stack overflow if (start>=end) return !!!!!!!!!!!
  • [x] while(left <= right && A[left] < pivot)
  • [x] if (left <= right) {

  • [x] ``` / low --> Starting index, high --> Ending index / quickSort(arr[], low, high) { if (low < high) { / pi is partitioning index, arr[pi] is now at right place / pi = partition(arr, low, high);

    quickSort(arr, low, pi - 1); // Before pi quickSort(arr, pi + 1, high); // After pi } } ```




  public class Solution {
    /**
     * @param A: an integer array
     * @return: nothing
     */
    public void sortIntegers2(int[] A) {
        // write your code here
        if (A == null || A.length == 0) {
            return;
        }
        quickSort(A, 0, A.length - 1);

    }
    public void quickSort(int[] A, int start, int end) {
        if (start >= end) {
            return;
        }
        int mid = start + (end - start) / 2;
        int pivot = A[mid];
        int left = start;
        int right = end;
        while (left <= right) {
            while(left <= right && A[left] < pivot) {
                left++;
            }
            while(left <= right && A[right] > pivot) {
                right--;
            }
            if (left <= right) {
                int temp = A[left];
                A[left] = A[right];
                A[right] = temp;
                left++;
                right--;
            }

        }
        quickSort(A, start, right);
        quickSort(A, left, end);
    }
}
  • [x] while(left <= right && A[left] < pivot) { left++; } while(left <= right && A[right] > pivot) { right--; } if (left <= right) { int temp = A[left]; A[left] = A[right]; A[right] = temp; left++; right--; }
  • [ ]

results matching ""

    No results matching ""