Pagini recente » Cod sursa (job #2560816) | Cod sursa (job #2543611) | Cod sursa (job #1048471) | Cod sursa (job #2818355) | Cod sursa (job #3030758)
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
ifstream f("algsort.in");
ofstream f2("algsort.out");
long aux[500001],v[500001];
int ordonare(unsigned int left, unsigned int right, unsigned int pos)
{
unsigned int j = 0;
for (unsigned int i = left; i < right; i++)
if (v[i] <= v[pos] && i != pos)
{
aux[j] = v[i];
j++;
}
aux[j] = v[pos];
unsigned int poz_pivot2 = j + left;
j++;
for (unsigned int i = left; i < right; i++)
if (v[i] > v[pos])
{
aux[j] = v[i];
j++;
}
for (unsigned int i = left; i < right; i++)
v[i] = aux[i - left];
return poz_pivot2;
}
void quicksort(unsigned int left, unsigned int right)
{
if (left < right)
{
unsigned int pos = left + rand() % (right - left);
pos = ordonare(left, right, pos);
quicksort(left, pos);
quicksort(pos + 1, right);
}
}
int main()
{
int i,n;
f>>n;
for(i=0;i<n;i++)
f>>v[i];
quicksort(0,n);
for(i=0;i<n;i++)
f2<<v[i]<<" ";
f.close();
f2.close();
return 0;
}