Cod sursa(job #1459750)

Utilizator adi_ispas95FMI - Adrian Ispas adi_ispas95 Data 10 iulie 2015 18:00:14
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;

inline void Interschimba(int &a, int &b){
	int c;

	c = a;
	a = b;
	b = c;
}

int Partition(int *a, int p, int r){
	
	int i, x;
	x = a[r];
	i = p - 1;

	for (int j = p; j <= r - 1; j++)
		if (a[j] <= x){
			i++;
			Interschimba(a[i], a[j]);
		}

	Interschimba(a[i + 1], a[r]);
	return i + 1;
}

void QuickSort(int *a, int p, int r){

	int q;

	if (p < r){
		q = Partition(a, p, r);
		QuickSort(a, p, q - 1);
		QuickSort(a, q + 1, r);
	}
}

int main(){

	ifstream in("algsort.in");
	ofstream out("algsort.out");

	const int NMAX = 500005;
	int n, *a = new int[NMAX];

	in >> n;

	for (int i = 1; i <= n; i++)
		in >> a[i];

	QuickSort(a, 1, n);

	for (int i = 1; i <= n; i++)
		out << a[i] << " ";

	return 0;
}