Cod sursa(job #1119869)

Utilizator sorin2kSorin Nutu sorin2k Data 24 februarie 2014 20:29:06
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<fstream>
using namespace std;

int v[500000];

void swap(int *a, int *b) {
	int aux = *a;
	*a = *b;
	*b = aux;
}

int pivot(int l, int r) {
	int i, j, p;
	p = rand()%(r-l+1) + l;
	swap(v+p, v+l);

	p = l;
	i = j = l+1;
	for(; i <= r; i++) {
		if(v[i] < v[p]) {
			swap(v+i, v+j);
			j++;
		}
	}
	swap(v+j-1, v+p);
	return j-1;
}

void qsort(int l, int r) {
	if(l < r) {
		int k = pivot(l, r);
		qsort(l, k-1);
		qsort(k+1, r);
	}
}

int main() {
	ifstream fin("algsort.in");
	ofstream fout("algsort.out");
	int n, i;
	fin >> n;
	for(i = 0; i < n; i++) fin >> v[i];
	qsort(0, n-1);
	for(i = 0; i < n; i++) fout << v[i] << " ";
	return 0;
}