Cod sursa(job #1623958)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 1 martie 2016 23:02:28
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <cstdio>
using namespace std;

int v[500005];

void schimba( int &a, int &b ){

    int c;
    c = a;
    a = b;
    b = c;

}

void quick_sort( int st, int dr ){

    if( st >= dr ) return ;

    int i , j, piv;

    schimba( v[st], v[(st+dr)/2] );
    piv = v[st];

    i = st + 1;
    j = dr;

    while( i <= j ){

        while( i <= j && v[i] <= piv ) i++;
        while( j >= i && v[j] >= piv ) j--;

        if( i <= j ){
            schimba( v[i], v[j] );
            i++;
            j--;
        }

    }

    i--;
    schimba( v[i], v[st] );

    quick_sort( st, i - 1 );
    quick_sort( i + 1, dr );


}

int main()
{


    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);

    int n, i, j;

    scanf("%d",&n);
    for( i = 1; i <= n; ++i ){
        scanf("%d",&v[i]);
    }

    quick_sort( 1, n );
    for( i = 1; i <= n; ++i )
        printf("%d ",v[i]);


    return 0;
}