Pagini recente » Cod sursa (job #138112) | Cod sursa (job #2103174) | Cod sursa (job #3143640) | Cod sursa (job #137748) | Cod sursa (job #821683)
Cod sursa(job #821683)
# include <cstdio>
# include <algorithm>
# include <fstream>
# include <iostream>
# include <vector>
#define NMAX 50000
using namespace std;
FILE *f1=fopen("algsort.in","r"),*f2=fopen("algsort.out","w");
vector <int> V;
int n;
void read ()
{
int x;
fscanf(f1,"%d\n",&n);
for( int i=1; i<=n; ++i )
{
fscanf(f1,"%d ",&x);
V.push_back(x);
}
}
int part (int p, int r)
{
int x,i;
x=V[r];
i=p-1;
for(int j=p;j<r;++j)
if (V[j]<=x)
{
i++;
swap(V[j],V[i]);
}
i++;
swap(V[i],V[r]);
return i;
}
int rand_part(int p, int r)
{
int i;
srand(time(NULL));
i=rand()%(r-p+1) + p;
swap (V[i],V[r]);
return part(p,r);
}
void qsort(int p, int r)
{
int q;
if(p<r)
{
q=rand_part(p,r);
qsort(p,q-1);
qsort(q+1,r);
}
}
int main (void)
{
read ();
qsort( 0, n-1 );
for ( int i=0; i<V.size(); ++i )
fprintf(f2,"%d ",V[i]);
fprintf(f2,"\n");
fclose(f1);
fclose(f2);
return 0;
}