Cod sursa(job #3261439)

Utilizator Onofrei_GeorgeOnofrei G Onofrei_George Data 5 decembrie 2024 20:58:41
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int a[500005], n;

void Citire()
{
    fin >> n;
    for (int i = 1; i <= n; i++)
        fin >> a[i];
}

void Afisare()
{
    for(int i = 1; i <= n; i++)
        fout << a[i] << " ";
}

int Pivot(int st, int dr)
{
    int i, k, pivot;
    swap(a[st], a[(st + dr) / 2]);
    pivot = a[st];
    k = st;
    for(i = st + 1; i <= dr; i++)
        if(a[i] <= pivot)
        {
            k++;
            swap(a[k], a[i]);
        }
    swap(a[st], a[k]);
    return k;
}

void Quicksort(int st, int dr)
{
    int p = Pivot(st, dr);
    if(st < p - 1) Quicksort(st, p - 1);
    if(p + 1 < dr) Quicksort(p + 1, dr);
}

int main()
{
    Citire();
    Quicksort(1, n);
    Afisare();
    return 0;
}