Pagini recente » Cod sursa (job #1677444) | Cod sursa (job #245213) | Cod sursa (job #616713) | Cod sursa (job #80137) | Cod sursa (job #2987874)
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500005];
int ordonare(int st, int dr, int poz_pivot)
{
int aux[500005], j = 0;
for(int i=st; i<dr; i++)
if(v[i] <= v[poz_pivot] && i != poz_pivot)
{
aux[j] = v[i];
j ++;
}
aux[j] = v[poz_pivot];
int poz_pivot2 = j + st;
j ++;
for(int i=st; i<dr; i++)
if(v[i] > v[poz_pivot])
{
aux[j] = v[i];
j ++;
}
for(int i=st; i<dr; i++)
v[i] = aux[i-st];
return poz_pivot2;
}
void quicksort(int st, int dr)
{
if(st < dr)
{
srand(time(0));
int poz_pivot = st + rand() % (dr-st);
poz_pivot = ordonare(st, dr, poz_pivot);
quicksort(st, poz_pivot);
quicksort(poz_pivot+1, dr);
}
}
int main()
{
int n;
fin >> n;
for(int i=0; i<n; i++)
fin >> v[i];
quicksort(0, n);
for(int i=0; i<n; i++)
fout << v[i] << " ";
return 0;
}