Cod sursa(job #2197740)

Utilizator LivcristiTerebes Liviu Livcristi Data 22 aprilie 2018 20:12:37
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#define NUM 500005
int v[NUM];
int n;
void schimb(int &a, int &b)
{
    int aux = a;
    a = b;
    b = aux;
}
void QuickSort(int st, int dr)
{
	if(st < dr)
	{
		//determinam pivorul
		int m = (st + dr) / 2;
		int aux = v[st];
		v[st] = v[m];
		v[m] = aux;
		int i = st , j = dr, d = 0;
		while(i < j)
		{
			if(v[i] > v[j])
			{
				schimb(v[i], v[j]);
				d = 1 - d;
			}
			i += d;
			j -= 1 - d;
		}
		QuickSort(st , i - 1);
		QuickSort(i + 1 , dr);
	}
}
using namespace std;
int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    f >> n;
    for(int i = 0; i < n; ++i)
        f >> v[i];
    QuickSort(0, n - 1);
    for(int i = 0; i < n; ++i)
        g << v[i] << " ";
    f.close();
    g.close();
}