Cod sursa(job #3005336)

Utilizator AndPitAndreeaPiticar AndPit Data 16 martie 2023 21:32:59
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
// ordonare crescatoare
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
#define NMAX 400000
int a[NMAX];
int divide(int st,int dr){
    int pivot=a[st];
    while(st<=dr){
        // liber la stanga, caut in dreapta un element
        while(st<dr&&a[dr]>=pivot)
            dr--;
        a[st]=a[dr];
        // liber la dreapta, caut in stanga un element
        while(st<dr&&a[st]<=pivot)
            st++;
        a[dr]=a[st];
    }
    a[st]=pivot;
    return st;
}
void qsort(int st,int dr){
    int poz;
    while(st<dr){
        poz=divide(st,dr);
        qsort(st,poz-1);
        qsort(poz+1,dr);
    }
}
int main(){
    int n;
    f>>n;
    for(int i=1;i<=n;++i)
        f>>a[i];
    qsort(1,n);
    for(int i=1;i<=n;++i)
        g<<a[i]<<" ";
    return 0;
}