Cod sursa(job #2780030)

Utilizator RaresPoinaruPoinaru-Rares-Aurel RaresPoinaru Data 5 octombrie 2021 19:59:25
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int n,v[500001];
void Quicksort (int left, int right)
{
    int len=right-left+1;
    if (len<=1)return;
    if (len==2)
    {
        if (v[left]>v[right])
            swap (v[left],v[right]);
        return;
    }
    swap (v[left],v[right]);
    int i=left,j=right-1;
    while (i<j)
    {
        while (v[i]<v[right] and i<j)
            i++;
        while (v[j]>v[right] and i<j)
            j--;
        swap (v[i],v[j]);
    }
    i=1;
    while (v[i+1]<=v[right])
        i++;
    i++;
    if (i>right)
        i=right;
    swap (v[i],v[right]);
    Quicksort(left,i-1);
    Quicksort(i+1,right);
}
int main()
{
    fin >>n;
    for (int i=1;i<=n;++i)
        fin >>v[i];
    Quicksort (1,n);
    for (int i=1;i<=n;++i)
        fout <<v[i]<<' ';
    return 0;
}