#include <vector> class Solution { public: void quickSort(vector<int>& nums, int left, int right) { int i = left, j = right; int pivot = nums[(left + right) / 2]; while (i <= j) { while (nums[i] < pivot) { i++; } while (nums[j] > pivot) { j--; } if (i <= j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; i++; j--; } } if (i < right) { quickSort(nums, i, right); } if (j > left) { quickSort(nums, left, j); } } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型vector */ vector<int> sortCows(vector<int>& nums) { quickSort(nums, 0, nums.size() - 1); return nums; } };
时间复杂度:
最优情况:O(n log n)
平均情况:O(n log n)
最坏情况:O(n^2)(在数组已经有序或者所有元素相同的情况下)
空间复杂度:
最优情况:O(log n)(使用递归调用栈的深度)
最坏情况:O(n)(在最坏情况下,递归调用栈的深度为n)