社区讨论

求教,这样写错在哪,该怎么改?

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 条回复,欢迎继续交流。

正在加载回复...