Pagini recente » Diferente pentru home intre reviziile 681 si 682 | Cod sursa (job #419764) | Cod sursa (job #132969) | Cod sursa (job #1921666) | Cod sursa (job #762169)
Cod sursa(job #762169)
/*
Algoritm de sortare prin comparare - QuickSort.
*/
#include <stdio.h>
#include <stdlib.h>
#define MAX 500000
int numere[MAX];
int partitie(int start, int stop) {
int st, dr;
int temp;
int pivot;
pivot = st = start;
dr = stop;
temp = numere[start];
while (st < dr) {
while (numere[st] <= temp)
st++;
while (numere[dr] > temp)
dr--;
if (st < dr) {
int aux = numere[st];
numere[st] = numere[dr];
numere[dr] = aux;
}
}
numere[start] = numere[dr];
numere[dr] = temp;
return dr;
}
void quick_sort (int start, int stop) {
int pivot;
if (start < stop) {
pivot = partitie(start, stop);
quick_sort(start, pivot - 1);
quick_sort(pivot + 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]);
quick_sort(0, n - 1);
for (i = 0; i < n; i++)
fprintf(f_out, "%d ", numere[i]);
return 0;
}