Pagini recente » Cod sursa (job #241633) | Cod sursa (job #2685976) | Cod sursa (job #1201819) | Istoria paginii fmi-no-stress-2012/solutii/parantezare | Cod sursa (job #762889)
Cod sursa(job #762889)
/*
Algoritm de sortare prin comparare - QuickSort.
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 500000
int numere[MAX];
void interschimb (int *a, int *b) {
int aux;
aux = *a;
*a = *b;
*b = aux;
}
void quicksort (int start, int stop) {
int i = start - 1;
int j = stop;
int temp = numere[stop];
if (stop <= start)
return;
while (1) {
while (numere[++i] < temp)
;
while (temp < numere[--j])
if (j == start)
break;
if (i >= j)
break;
interschimb(&numere[i], &numere[j]);
}
interschimb(&numere[i], &numere[stop]);
quicksort(start, i - 1);
quicksort(i + 1, stop);
}
int main () {
FILE *f_in = fopen("algsort.in", "r");
FILE *f_out = fopen("algsort.out", "w");
int n;
int i;
fscanf(f_in, "%d", &n);
for (i = 0; i < n; i++)
fscanf(f_in, "%d", &numere[i]);
quicksort(0, n - 1);
for (i = 0; i < n; i++)
fprintf(f_out, "%d ", numere[i]);
return 0;
}