求教,这样写错在哪,该怎么改?
查看原帖
求教,这样写错在哪,该怎么改?
319478
zhibuba楼主2020/8/21 14:37
#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;
}
2020/8/21 14:37
加载中...