Cod sursa(job #2953053)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 10 decembrie 2022 13:26:22
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <climits>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <bitset>
#include <map>
#include <cstring>
#include <algorithm>

#define NMAX 500003
#define LOG 20

using namespace std;



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

int n;
int v[NMAX];


int gasescPivot(int st, int dr)
{
	int dSt = 0, dDr = 1;
	while (st < dr)
	{
		if (v[st] > v[dr])
		{
			swap(v[st], v[dr]);
			dSt = 1 - dSt;
			dDr = 1 - dDr;
		}
		st += dSt;
		dr -= dDr;
	}
	return st;
}

void quickSort(int v[], int st, int dr)
{
    if (st < dr)
    {
        int piv = gasescPivot(st,dr);

        quickSort(v, st, piv-1);
        quickSort(v, piv + 1, dr);
    }
}

int main()
{
	fin >> n;
	for (int i = 1; i <= n; i++)
	{
		fin >> v[i];
	}
    quickSort(v,1,n);
	for (int i = 1; i <= n; i++)
	{
		fout << v[i]<<" ";
	}
	return 0;
}