Cod sursa(job #2337610)

Utilizator PaulTPaul Tirlisan PaulT Data 6 februarie 2019 16:11:24
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
using namespace std;

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

int n, a[500005];

void Read();
void QuickSort(int st, int dr);
void Write();

int main()
{
	Read();
	QuickSort(1, n);
	Write();
	
	fin.close();
	fout.close();
}

void Read()
{
	fin >> n;
	for (int i = 1; i <= n; i++)
		fin >> a[i];
}
	
void QuickSort(int st, int dr)
{
	int pivot = a[(st + dr) / 2];
	int i = st, j = dr;
	do {
		while (a[i] < pivot) i++;
		while (a[j] > pivot) j--;
		if (i <= j)
		{
			int aux = a[i];
			a[i] = a[j];
			a[j] = aux;
			i++;
			j--;
		}
	} while (i <= j);
	if (st < j) QuickSort(st, j);
	if (i < dr) QuickSort(i, dr);
}

void Write()
{
	for (int i = 1; i <= n; i++)
		fout << a[i] << ' ';
}