社区讨论
求教,这样写错在哪,该怎么改?
P1177【模板】排序参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lodcl7hd
- 此快照首次捕获于
- 2023/10/31 04:23 2 年前
- 此快照最后确认于
- 2023/11/06 19:45 2 年前
CPP
#include <iostream>
#include <algorithm>
#include <iterator>
#include <utility>
#include <cstdlib>
#include <ctime>
using namespace std;
int nums[100000];
int N;
void quick_sort(int left, int right)
{
if (left >= right)
return;
int pivot = rand() % (right - left + 1) + left, t = nums[pivot];
swap(nums[pivot], nums[right]);
int i = left, j = right - 1;
while (true)
{
while (i < j && nums[i] < t)
i++;
while (i < j && nums[j] > t)
j--;
if (i < j)
swap(nums[i], nums[j]);
else
break;
i++, j--;
}
swap(nums[i], nums[right]);
quick_sort(left, i - 1);
quick_sort(i + 1, right);
}
int main()
{
ios::sync_with_stdio(false);
cin >> N;
copy_n(istream_iterator<int>(cin), N, nums);
srand(time(NULL));
quick_sort(0, N - 1);
copy_n(nums, N, ostream_iterator<int>(cout, " "));
cout << flush;
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...