热门

最新

红包

立Flag

投票

同城

我的

发布
wzh18907434168
Eliooooooo
2 年前
truewzh18907434168

每日一题
912. 排序数组

给你一个整数数组 `nums`,请你将该数组升序排列。



**示例 1:**

```
输入:nums = [5,2,3,1]
输出:[1,2,3,5]
```

**示例 2:**

```
输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]
```

解法一:快排

时间复杂度:O(nlogn)

空间复杂度:O(1)
class Solution {
public:
vector<int> sortArray(vector<int>& nums) {
srand(time(NULL));
quick_sort(nums, 0, nums.size() - 1);
return nums;
}
void quick_sort(vector<int>& arr, int l, int r)
{
if(l >= r) return;
int key = arr[rand() % (r - l + 1) + l];
int left = l - 1, right = r + 1;
for(int i = l; i < right; )
{
if(arr[i] > key) swap(arr[i], arr[--right]);
else if(arr[i] < key) swap(arr[i++], arr[++left]);
else i++;
}
quick_sort(arr, l, left);
quick_sort(arr, right, r);
}
};

排序数组

每日学习打卡
CSDN App 扫码分享
分享
评论
1
打赏
  • 复制链接
  • 举报
下一条:
图书管理系统烂大街还能做嘛
立即登录