Pagini recente » Cod sursa (job #423169) | Cod sursa (job #594419) | Cod sursa (job #2818670) | Cod sursa (job #2173317) | Cod sursa (job #856169)
Cod sursa(job #856169)
#include <fstream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int N=500060;
int n,v[N];
int partition(int p,int r);
int rpartition(int p,int r);
void read()
{
in>>n;
for(int i=1;i<=n;i++)
in>>v[i];
}
void qs(int p,int r)
{
int q;
if(p<r)
{
q=rpartition(p,r);
qs(p,q-1);
qs(q+1,r);
}
}
void sw(int i,int j)
{
int k;
k=v[i];
v[i]=v[j];
v[j]=k;
}
int rpartition(int p,int r)
{
srand(time(NULL));
int i=rand();
sw(r,i);
return partition(p,r);
}
int partition(int p,int r)
{
int x=v[r],i=p-1;
for(int j=p;j<=r-1;j++)
{
if(v[j]<=x)
{
++i;
sw(i,j);
}
}
sw(i+1,r);
return i+1;
}
void print()
{
for(int i=1;i<=n;i++)
out<<v[i]<<" ";
out<<'\n';
}
int main()
{
read();
qs(1,n);
print();
//cout << "Hello world!" << endl;
return 0;
}