Cod sursa(job #1759120)

Utilizator catalincraciunCraciun Catalin catalincraciun Data 18 septembrie 2016 15:31:39
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>
#include <algorithm>

#define nmax 500005

using namespace std;

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

int n;
int A[nmax];

void read() {
	f>>n;
	for (int i=1;i<=n;++i)
		f>>A[i];
	
	f.close();
}

void sort(int left, int right) {
	int mij = left + (right - left)/2;
	int pivot = A[mij];

	int i = left;
	int j = right;

	while (i < j) {
		while (A[i] < pivot)
			i++;
		while (A[j] > pivot)
			j--;

		if (i <= j) {
			swap(A[i], A[j]);
			i++;
			j--;
		} else {
			if (left < j)
				sort(left, j);
			if (i < right)
				sort(i, right);
			return;
		}
	}
}

void output() {
	for (int i=1;i<n;++i)
		g<<A[i]<<' ';
	g<<A[n]<<'\n';
}

int main() {

	read();
	sort(1, n);
	output();

	g.close();

	return 0;
}