Pagini recente » Cod sursa (job #1102114) | Cod sursa (job #834570) | Cod sursa (job #1729885) | Cod sursa (job #1937739) | Cod sursa (job #2840677)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int MAX=5e5+5;
int v[MAX],n;
int partition(int *array, int st, int dr)
{
int m=(st+dr)/2;
swap(v[st],v[m]);
int i=st,j=dr;
int ii=0,jj=1;
while(i<j)
{
if(v[i]>v[j])
{
swap(v[i],v[j]);
swap(ii,jj);
}
i+=ii;
j-=jj;
}
return i;
}
void quicksort(int *array, int left, int right)
{
int stack[4*MAX];
int i=0;
stack[i++] = left;
stack[i++] = right;
while (i > 0)
{
right = stack[--i];
left = stack[--i];
if (left >= right)
continue;
int index = partition(array, left, right);
stack[i++] = left;
stack[i++] = index - 1;
stack[i++] = index + 1;
stack[i++] = right;
}
}
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;
}