求助!后两个点TLE,怎么优化
查看原帖
求助!后两个点TLE,怎么优化
657427
0Aurora0楼主2022/9/5 14:54
#include<iostream>
#include<cstdio>
using namespace std;

typedef long long ll;
long long num[100000];

void swap(ll& a, ll& b)
{
    ll temp = a;
    a = b;
    b = temp;
}

void quicksort(ll* array, ll left, ll right)
{
    if (left >= right)
        return;
    ll l = left, r = right;
    ll pivot = array[(left+right)>>1];
    swap(array[left], array[(left + right) >> 1]);
    while (l < r)
    {
        while (l<r && array[r]>pivot)
            --r;
        if (l == r)
        {
            swap(array[left], array[l]);
            break;
        }
        while (l < r && array[l] <= pivot)
            ++l;
        if (l < r)
            swap(array[r], array[l]);
        else
            swap(array[left], array[l]);
    }
    quicksort(array, left, l - 1);
    quicksort(array, l + 1, right);
}

int main(void)
{
    long n;
    cin >> n;
    for (long i = 0; i < n; ++i)
        scanf("%lld",&num[i]);
    quicksort(num, 0, n - 1);
    for (long i = 0; i < n; ++i)
        printf("%lld ",num[i]);
    return 0;
}
2022/9/5 14:54
加载中...