Pagini recente » Cod sursa (job #2095179) | Cod sursa (job #1433176) | Cod sursa (job #1684094) | Cod sursa (job #176596) | Cod sursa (job #825633)
Cod sursa(job #825633)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
FILE *f = fopen("algsort.in","r");
FILE *g = fopen("algsort.out","w");
int N;
int A[500100];
inline void swap(int &a,int &b)
{
int aux = a;
a = b;
b = aux;
}
void afisare(void)
{
for(int i=1;i<=N;i++)
fprintf(g,"%d ",A[i]);
fprintf(g,"\n");
}
inline int pozQS(int li,int ls)
{
int k = rand()%(ls-li);
int i;
swap(A[li+k],A[li]);
for(i=li+1;i<=ls;)
if(A[li] < A[i])
swap(A[i],A[ls]),--ls;
else
++i;
swap(A[li],A[--i]);
return i;
}
inline void QuickSort(int li,int ls)
{
if(li >= ls)
return ;
int k = pozQS(li,ls);
QuickSort(li,k-1);
QuickSort(k+1,ls);
}
void citire(void)
{
fscanf(f,"%d",&N);
for(int i=1;i<=N;i++)
fscanf(f,"%d",&A[i]);
}
int main()
{
citire();
srand(time(NULL));
QuickSort(1,N);
afisare();
}