Pagini recente » Cod sursa (job #3211134) | Cod sursa (job #2080128) | Cod sursa (job #2073813) | Cod sursa (job #2416773) | Cod sursa (job #721908)
Cod sursa(job #721908)
#include<fstream>
#include<time.h>
#include<stdlib.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500001],n,pz,aux;
int poz(int ls , int ld)
{
int pz = ls + rand()%(ld-ls+1);
int aux = a[pz];
a[pz]=a[ls];
a[ls]=aux;
int i=ls;
int j=ld;
int ii=0,jj=-1;
while(i!=j)
{
if(a[i]>a[j]){
int aux =a[i];
a[i]=a[j];
a[j]=aux;
aux=ii;
ii=-jj;
jj=-aux;
}
i+=ii;
j+=jj;
}
return i;
}
void sort(int ls,int ld, int a[]){
if(ls<ld){
int p=poz(ls,ld);
sort(ls,p-1,a);
sort(p+1,ld,a);
}
}
int main(){
srand(time(0));
int i;
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
for(i=n;i>=3;i--)
{
pz=1+rand()%(i-1);
aux=a[n];
a[n]=a[pz];
a[pz]=aux;
}
sort(1 , n , a);
for(i=1;i<=n;i++)
g<<a[i]<<" ";
return 0;
}