class Solution { private: void merge(std::vector<int>& array, int left, int mid, int right) { std::vector<int> temp(right - left + 1); int i = left, j = mid + 1, k = 0; while (i <= mid && j <= right) { if (array[i] <= array[j]) { temp[k++] = array[i++]; } else { temp[k++] = array[j++]; } } while (i <= mid) { temp[k++] = array[i++]; } while (j <= right) { temp[k++] = array[j++]; } for (int i = left, k = 0; i <= right; ++i, ++k) { array[i] = temp[k]; } } void mergeSort(std::vector<int>& array, int left, int right) { if (left < right) { int mid = left + (right - left) / 2; mergeSort(array, left, mid); mergeSort(array, mid + 1, right); merge(array, left, mid, right); } } void quickSort(std::vector<int>& array, int left, int right) { if (left >= right) return; int pivot = array[left]; int i = left, j = right; while (i < j) { while (i < j && array[j] >= pivot) j--; array[i] = array[j]; while (i < j && array[i] <= pivot) i++; array[j] = array[i]; } array[i] = pivot; quickSort(array, left, i - 1); quickSort(array, i + 1, right); } public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 将给定数组排序 * @param arr int整型vector 待排序的数组 * @return int整型vector */ vector<int> MySort(vector<int>& arr) { // write code here // mergeSort(arr, 0, arr.size() - 1); quickSort(arr, 0, arr.size() - 1); return arr; } };