Cod sursa(job #1707875)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 26 mai 2016 00:52:58
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <cstdio>
using namespace std;

#define NMAX 500005
int v[ NMAX ];

void schi( int &a, int &b );
void quick_sort( int st, int dr );

int main()
{

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

    int n, i;

    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;

}


void quick_sort( int st, int dr ){


    if( st > dr ) return ;

    int i = st + 1, j = dr;
    int mid = ( st + dr ) / 2;

    schi( v[ st ], v[ mid ] );

    while( i <= j ){
        while( i <= j && v[i] <= v[ st ] ) i++;
        while( i <= j && v[j] >= v[ st ] ) j--;
        if( i < j ){
            schi( v[ i ], v[ j ] );
            i++;
            j--;
        }
    }
    i--;
    schi( v[ st ], v[ i ] );
    quick_sort( st, i - 1 );
    quick_sort( i + 1, dr );


}

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

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

}