Pagini recente » Cod sursa (job #3247757) | Cod sursa (job #2448909) | Cod sursa (job #1014893) | Cod sursa (job #2301944) | Cod sursa (job #330053)
Cod sursa(job #330053)
//Quicksort cu citire parsata
#include <cstdio>
#include <cstdlib>
#define S_MAX 65536
#define N 500001
int A[N];
int k=0;
char S[S_MAX];
int poz(int a, int b)
{
int i,j,t,r=(a+b)>>1;
t=A[a]; A[a]=A[r]; A[r]=t;
for (i=0, j=-1; a<b; a+=i, b+=j)
if (A[a]>=A[b])
{
t=A[a]; A[a]=A[b]; A[b]=t;
t=i; i=-j; j=-t;
}
return a;
}
void sort(int a, int b)
{
if (a<b)
{
int m=poz(a,b);
sort(a,m-1);
sort(m+1,b);
}
}
void read(int &nr)
{
nr=0;
for (; S[k]<'0' || S[k]>'9'; k++)
if (k==S_MAX-1)
{
fread(S,1,S_MAX,stdin);
k=-1;
}
for (; S[k]>='0' && S[k]<='9'; k++)
{
nr=10*nr+S[k]-'0';
if (k==S_MAX-1)
{
fread(S,1,S_MAX,stdin);
k=-1;
}
}
}
int main()
{
int i,n;
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
fread(S,1,S_MAX,stdin);
read(n);
for (i=1; i<=n; i++)
read(A[i]);
sort(1,n);
for (i=1; i<=n; i++) printf("%d ",A[i]);
return 0;
}