Cod sursa(job #2694649)

Utilizator corina_dimitriuDimitriu Corina corina_dimitriu Data 10 ianuarie 2021 12:03:47
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#define DMAX 500002
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

int a[DMAX];

int partitioneaza(int a[], int p, int q)
{
    int i,j,x,k;
    i=p+1;
    j=q;
    x=a[p];
    while(i<=j)
    {
        if(a[i]<=x)
           i++;
        if(a[j]>=x)
           j--;
        if(i<j&&a[i]>x&&a[j]<x)
        {
            swap(a[i],a[j]);
            i++;
            j--;
        }
    }
    k=i-1;
    swap(a[k],a[p]);
    return k;
}

void QuickSort(int a[], int p, int q)
{
    int k;
    if(p<q)
    {
       k=partitioneaza(a,p,q);
       QuickSort(a,p,k-1);
       QuickSort(a,k+1,q);
    }
}

int main()
{
    int n,i;
    fin>>n;
    for(i=0;i<n;i++)
        fin>>a[i];
    QuickSort(a,0,n-1);
    return 0;
}