Pagini recente » Cod sursa (job #1831680) | Cod sursa (job #3163928) | Cod sursa (job #1270294) | Cod sursa (job #1723373) | Cod sursa (job #648528)
Cod sursa(job #648528)
#include <fstream>
using namespace std;
#define MAGIC 5.723425
#define Nmax 500001
#define Bins 10
#define MAGIC_2 3.236066
int v[Nmax],gap[Bins];
int N;
int main () {
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
fin>>N;
for (int i=0; i<N; ++i)
fin>>v[i];
gap[Bins-1]=1;
for (int i=Bins-2; i>=0; --i)
gap[i]=int(MAGIC*gap[i+1]+1);
for (int k=0; k<Bins; ++k) {
for (int i=gap[k]; i<N; ++i) {
int j,tmp=v[i];
for (j=i; j>=gap[k] && v[j-gap[k]]>tmp; j-=gap[k])
v[j]=v[j-gap[k]];
v[j]=tmp;
}
}
for (int i=0; i<N; ++i)
fout<<v[i]<<" ";
return 0;
}