Pagini recente » Cod sursa (job #2132928) | Cod sursa (job #676942) | Cod sursa (job #1835697) | Cod sursa (job #3273104) | Cod sursa (job #2611216)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int N, v[500001], b[500001];
int pivot(int p, int u)
{
int aux;
int cp=0, cu=-1;///cp = pasul de crestere al lui p; cu = --||-- al lui u;
while(p<u)
{
if(v[p]>v[u])
{
aux=v[p];
v[p]=v[u];
v[u]=aux;
aux=cp;
cp=-cu;
cu=-aux;
}
p=p+cp;
u=u+cu;
}
return p;
}
void quicksort(int p, int u)
{
if(p<u)
{
int k=pivot(p,u);
quicksort(p,k-1);
quicksort(k+1,u);
}
}
void interclasare(int, int, int);
void sortint(int p, int u)
{
if(p<u)
{
int k=(p+u)/2;
sortint(p,k);
sortint(k+1,u);
interclasare(p,u,k);
}
}
void interclasare(int p, int u, int k)
{
int i=p, j=k+1, m=1;
for(;i<=k && j<=u;m++)
if(v[i]<=v[j])
b[m]=v[i++];
else
b[m]=v[j++];
while(i<=k)
b[m++]=v[i++];
while(j<=u)
b[m++]=v[j++];
for(m=1,i=p;i<=u;i++,m++)
v[i]=b[m];
}
int main()
{
f>>N;
for (int i=1;i<=N;i++)
f>>v[i];
//quicksort(1,N);
sortint(1,N);
for (int i=1;i<=N;i++)
g<<v[i]<<' ';
return 0;
}