Pagini recente » Cod sursa (job #311214) | Cod sursa (job #561628) | Cod sursa (job #3030740) | Cod sursa (job #2841570) | Cod sursa (job #1534873)
#include <bits/stdc++.h>
using namespace std;
int gaps[]={1,3,33,123,453,456,1066};
int gaps_size=7;
void shell_partition(int a[],int n,int gap_length)
{
for(int i=gap_length+1;i<=n;++i)
{
int j=i-gap_length,aux=a[i];
while (j>0&&a[j]>aux)
{
a[j+gap_length]=a[j];
j-=gap_length;
}
a[j+gap_length]=aux;
}
}
void shell_sort(int a[],int n)
{
for(int i=gaps_size-1;i>=0;--i)
shell_partition(a,n,gaps[i]);
}
#define LE 500666
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[LE];
#define cout g
int main()
{
int n,i;
f>>n;
for(i=1;i<=n;++i) f>>a[i];
shell_sort(a,n);
for(i=1;i<=n;++i) cout<<a[i]<<" ";
return 0;
}