Pagini recente » Cod sursa (job #2648241) | Cod sursa (job #2419843) | Cod sursa (job #2233580) | Cod sursa (job #98870) | Cod sursa (job #2607543)
#include <bits/stdc++.h>
#define NMAX 500001
#define MOD 666013
using namespace std;
int v[NMAX],n;
void InsertionSort(int st,int dr)
{
for(int i = st+1; i<=dr; ++i)
{
int temp = v[i];
int j = i - 1;
while(j >= 1 && temp < v[j])
{
v[j+1] = v[j];
j--;
}
v[j+1] = temp;
}
}
int pivot(int st,int dr)
{
int d = 0;
swap(v[st],v[(st+dr)/2]);
while(st < dr)
{
if(v[st] > v[dr])swap(v[st],v[dr]), d = 1 - d;
st += d;
dr -= 1-d;
}
return st;
}
void quicksort(int st,int dr)
{
if(st < dr)
{
if(st + 70 > dr)InsertionSort(st,dr);
else
{
int p = pivot(st,dr);
quicksort(st,p-1);
quicksort(p+1,dr);
}
}
}
void citire()
{
freopen("algsort.in","r",stdin);
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d",&v[i]);
}
void afis()
{
freopen("algsort.out","w",stdout);
quicksort(1,n);
for(int i=1;i<=n;++i)
printf("%d ",v[i]);
}
int main()
{
citire();
afis();
}