Pagini recente » Cod sursa (job #898783) | Cod sursa (job #2177338) | Cod sursa (job #1349796) | Cod sursa (job #2118324) | Cod sursa (job #856135)
Cod sursa(job #856135)
#include <fstream>
#include <time.h>
#include <stdlib.h>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int partition(int a[], int p, int q)
{
int x,i,j,aux;
x=a[p];
i=p;
for(j=p+1;j<=q;j++)
if(a[j]<=x)
{
i++;
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
aux=a[i];
a[i]=a[p];
a[p]=aux;
return i;
}
int rand_partition(int a[], int p, int q)
{
int d,x,aux;
srand(time(NULL));
d=q-p+1;
x=p+(rand()%d);
aux=a[x];
a[x]=a[p];
a[p]=aux;
return partition(a,p,q);
}
void quicksort(int a[], int p, int q)
{
if(p<q)
{
int x;
x=rand_partition(a,p,q);
quicksort(a,p,x-1);
quicksort(a,x+1,q);
}
}
int main()
{
int n,i,a[500010];
in>>n;
for(i=1;i<=n;i++) in>>a[i];
//out<<rand_partition(a,1,n)<<"\n";
quicksort(a,1,n);
for(i=1;i<=n;i++) out<<a[i]<<" ";
return 0;
}