Pagini recente » Cod sursa (job #1191189) | Cod sursa (job #1464864) | Cod sursa (job #173175) | Cod sursa (job #1211290) | Cod sursa (job #2100843)
#include <stdio.h>
#include <stdlib.h>
void swap(int *v, int a, int b)
{
int aux=v[a];
v[a]=v[b];
v[b]=aux;
}
int partition(int *v, int l, int r)
{
int poz=l+rand()%(l-r);
swap(v, r, poz);
int i=l, j;
for(j=l;j<r;j++)
if(v[j]<=v[r]){
swap(v, i, j);
i++;
}
swap(v, i, r);
return i;
}
void sort(int *v, int l, int r)
{
if(l<r){
int poz=partition(v, l, r);
sort(v, l, poz-1);
sort(v, poz+1, r);
}
}
int main()
{
srand(time(NULL));
int n,i;
FILE *fin=fopen("algsort.in", "r"),
*fout=fopen("algsort.out", "w");
fscanf(fin, "%d", &n);
int *v=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
fscanf(fin, "%d", &v[i]);
sort(v, 0, n-1);
for(i=0;i<n;i++)
fprintf(fout, "%d ", v[i]);
return 0;
}