Pagini recente » Cod sursa (job #1409862) | Cod sursa (job #2183467) | Cod sursa (job #1908837) | Cod sursa (job #1435349) | Cod sursa (job #247136)
Cod sursa(job #247136)
#include <stdio.h>
#define fin "algosort.in"
#define fout "algosort.out"
int v[50001], n, i, k ;
void swap(int &first, int &second)
{
int aux;
aux = first;
first = second;
second = aux;
}
void quicksort(int a[], int l, int r)
{
int i = l-1, j = r, p = l-1, q = r;
int v = a[r];
if( r <= l)
return;
for( ; ; )
{
while(a[++i] < v);
while(v < a[--j])
if(j == l)
break;
if(i >= j)
break;
swap(a[i], a[j]);
if(a[i] == v)
{
p++;
swap(a[p], a[i]);
}
if( v == a[j])
{
q--;
swap(a[j], a[q]);
}
}
swap(a[i], a[r]);
j = i-1;
i = i+1;
for( k = l; k < p; k++, j--)
swap(a[k], a[j]);
for( k = r-1; k > q; k--, i++)
swap(a[i], a[k]);
quicksort(a, l, j);
quicksort(a, i ,r);
}
int main(void)
{
freopen(fin, "r", stdin);
freopen(fout, "w",stdout);
for(i = 1; i <= n; i++)
scanf("d", &v[i]);
quicksort(v, 1, n);
for( i = 1; i<=n; i++)
printf("%d", v[i]);
printf("\n");
fcloseall();
return 0;
}