这道题就是考排序。
用快速排序,每次划分的时候随机选择一个数作为Pivot,不然会超时。
class Solution {
public:
vector<int> sortArray(vector<int>& nums) {
std::srand(static_cast<unsigned int>(std::time(nullptr)));
quick_sort(nums,0,nums.size()-1);
return nums;
}
void quick_sort(vector<int>& nums,int left,int right){
if(left>=right)
return;
int pos = partition(nums,left,right);
quick_sort(nums,left,pos-1);
quick_sort(nums,pos+1,right);
}
int partition(vector<int>& nums,int left,int right)
{
if(left >= right)
return left;
int random_pos = left + std::rand() % (right - left + 1);
std::swap(nums[left],nums[random_pos]);
int pivot = nums[left];
while(left<right){
while(left<right && pivot <= nums[right]) right--;
nums[left] = nums[right];
while(left<right && pivot >= nums[left]) left++;
nums[right] = nums[left];
}
nums[left] = pivot;
return left;
}
};