Cod sursa(job #681752)

Utilizator DSzprogDombi Szabolcs DSzprog Data 17 februarie 2012 18:49:39
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <cstdio>
#include <malloc.h>

int n;
int * a;
void qs(int l, int r) {
	int i = l;
	int j = r;
	int p = a[(i + j) / 2];
	while (i <= j) {
		while (a[i] < p) {++i;}
		while (a[j] > p) {--j;}
		if (i <= j) {
			int t = a[i];
			a[i] = a[j];
			a[j] = t;
			++i;
			--j;
		}
	}
	if (l < j) {qs(l, j);}
	if (i < r) {qs(i, r);}
}

int main() {
	FILE * f1 = fopen("algsort.in", "rt");
	fscanf(f1, "%d", &n);
	a = (int *)malloc(n * 4);
	for (int i = 0; i < n; ++i) {
		fscanf(f1, "%d", &a[i]);
	}
	qs(0, n - 1);
	FILE * f2 = fopen("algsort.out", "wt");
	for (int i = 0; i < n; ++i) {
		fprintf(f2, "%d ", a[i]);
	}
	fclose(f1);
	fclose(f2);
}