Pagini recente » Rating Alex S Hill (shantih1) | Profil Astronothing | Rating Crestez Paul (iarba) | Rating Herpesius (rEbyTer) | Cod sursa (job #660390)
Cod sursa(job #660390)
#include <stdio.h>
#define IN "algsort.in"
#define OUT "algsort.out"
using namespace std;
int *a;
int n, k;
void pre(int st, int dr, int &k)
{
int stD, drD, aux;
stD = 0;
drD = -1;
while (st < dr)
{
if (a[st] > a[dr])
{
aux = a[st];
a[st] = a[dr];
a[dr] = aux;
aux = stD;
stD = -drD;
drD = -aux;
}
st += stD;
dr += drD;
}
k = st;
}
void quick(int st, int dr)
{
if (st < dr)
{
pre(st, dr, k);
quick(st, k - 1);
quick(k + 1, dr);
}
}
int main()
{
freopen (IN, "r", stdin);
freopen (OUT, "w", stdout);
scanf ("%d", &n);
a = new int[n];
for (int i = 0 ; i < n ; i ++)
scanf ("%d", a + i);
quick(0, n - 1);
for (int i = 0 ; i < n ; i++)
printf("%d ", a[i]);
printf("\n");
fclose(stdin);
fclose(stdout);
delete a;
return 0;
}