class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 将给定数组排序
     * @param arr int整型vector 待排序的数组
     * @return int整型vector
     */
    void quickSort(vector<int>& arr, int left, int right) {
        // 定界
        if (left >= right) {
            return;
        }
        int i = left, j = right;
        int base = arr[left];
        while (i < j) {
            while((i < j) && (arr[j] >= base)) {
                j--;
            }
            
            while((i < j) && (arr[i] <= base)) {
                i++;
            }
            if (i < j) {
                swap(arr[i], arr[j]);
            }
        }
        arr[left] = arr[i];
        arr[i] = base;
        quickSort(arr, left, i - 1);
        quickSort(arr, i + 1, right);
    }
    vector<int> MySort(vector<int>& arr) {
        int len = arr.size();
        if (len == 0) {
            return arr;
        }
        quickSort(arr, 0, len - 1);
        return arr;
    }
};