Cod sursa(job #922707)

Utilizator PopdanDanielPopdan Daniel PopdanDaniel Data 22 martie 2013 16:38:42
Problema Sortare prin comparare Scor 40
Compilator c Status done
Runda Arhiva educationala Marime 0.89 kb
#include <stdio.h>
#include <stdlib.h>
#define NMAX 500000
int A[NMAX],n;
void quicksort(int a, int b)
{
    int piv=a, ind=b, var;
    while(piv!=ind)
    {
        if(((A[piv]>A[ind])&&(piv<ind))||((A[piv]<A[ind])&&(ind<piv)))
        {
            var=A[ind];
            A[ind]=A[piv];
            A[piv]=var;
            var=ind;
            ind=piv;
            piv=var;
        }
        if(ind < piv)
            ind++;
        if(ind > piv)
            ind--;
    }
    if(a!=piv)
        quicksort(a, piv-1);
    if(piv!=b)
        quicksort(piv+1,b);
}
int main()
{
    int i;
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);
    scanf("%d", &n);
    for(i=0; i<n; i++)
        scanf("%d", &A[i]);
    quicksort(0,n-1);
    for(i=0; i<n; i++)
        printf("%d ", A[i]);
    fclose(stdin);
    fclose(stdout);
    return 0;
}