Pagini recente » Cod sursa (job #1955936) | Cod sursa (job #1821418) | Cod sursa (job #1166621) | Cod sursa (job #1002609) | Cod sursa (job #660830)
Cod sursa(job #660830)
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void interschimbare(int &x,int &y)
{
x=x+y-(y=x);
}
int pivot(int A[],int st,int dr)
{
int x=A[dr];
int i=st-1;
for(int j=st;j<=dr-1;j++)
if(A[j]<=x)
{
i++;
interschimbare(A[i],A[j]);
}
interschimbare(A[i+1],A[dr]);
return i+1;
}
int random(int A[],int st,int dr)
{
int x=rand() %dr;
interschimbare(A[x],A[dr]);
return pivot(A,st,dr);
}
void Quicksort(int A[],int st,int dr)
{
if(st<dr)
{
int piv=pivot(A,st,dr);
Quicksort(A,st,piv-1);
Quicksort(A,piv+1,dr);
}
}
int main()
{
FILE *f=fopen("algsort.in","rt");
FILE *g=fopen("algsort.out","wt");
srand(time(NULL));
int A[500000],n;
fscanf(f,"%i",&n);
for(int i=0;i<n;i++)
fscanf(f,"%i",&A[i]);
Quicksort(A,0,n-1);
for(int i=0;i<n;i++)
fprintf(g,"%i ",A[i]);
fclose(f);
fclose(g);
return 0;
}