Cod sursa(job #1087698)

Utilizator auRSTARHreapca Aurelian auRSTAR Data 19 ianuarie 2014 19:18:49
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,i,A[510010];
void sorteaza(int,int);
int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)scanf("%d",&A[i]);
    sorteaza(1,n);
    for(i=1;i<=n;i++)printf("%d ",A[i]);
    return 0;
}
void sorteaza(int st,int dr)
{
    if(st>=dr)return;
    int poz=(st+dr)/2;
    int p=st,q=dr;
    for(;p<q;)
    {
        while(A[p]<A[poz])p++;
        while(A[q]>A[poz])q--;
        if(p>=q)break;
        if(p==poz)poz=q;
        else
            if(q==poz)poz=p;
        int aux=A[p];
        A[p]=A[q];
        A[q]=aux;
    }
    sorteaza(st,poz-1);
    sorteaza(poz+1,dr);
}