Pagini recente » Cod sursa (job #2123294) | Cod sursa (job #2402950) | Cod sursa (job #125823) | Cod sursa (job #1769768) | Cod sursa (job #648520)
Cod sursa(job #648520)
#include <fstream>
using namespace std;
#define MAGIC 1.618033
#define Nmax 500001
#define Bins 16
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;
}