Pagini recente » Cod sursa (job #811511) | Cod sursa (job #3277638) | Cod sursa (job #1712065) | Cod sursa (job #2567369) | Cod sursa (job #1707875)
#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;
}