912. 排序数组
1.题目描述
给定一个整数数组 nums,将该数组升序排列。
示例 1:
2.思路
主要学习快速排序的partition。
3.代码
class Solution {
public:
vector<int> sortArray(vector<int>& nums) {
vector<int> res;
if(nums.empty()){
return res;
}
quickSort(nums,0,nums.size()-1);
return nums;
}
int partition(vector<int>& nums, int left, int right){
int t = left;
for(int i = left;i < right;++i){
if(nums[i] < nums[right]){
swap(nums[t++],nums[i]);
}
}
swap(nums[t],nums[right]);
return t;
}
void quickSort(vector<int>& nums, int left, int right){
if(left >= right){
return;
}
int index = partition(nums,left,right);
if(index > left){
quickSort(nums,left, index-1);
}
if(index < right){
quickSort(nums,index+1,right);
}
}
};
复杂度分析
时间复杂度:O(n)
空间复杂度:O(1)