Pagini recente » Cod sursa (job #2824502) | Cod sursa (job #296493) | Cod sursa (job #1548002) | Cod sursa (job #2647159) | Cod sursa (job #1808044)
#include <cstdio>
#include <algorithm>
#define in "algsort.in"
#define out "algsort.out"
#define NMAX (500000 + 7)
using namespace std;
int n, v[NMAX], gap[8] = {512, 256, 128 ,64 ,32, 16, 4, 1};
void shellSort()
{
for(int t = 0; t< 6; ++t)
{
if(gap[t] > n) continue;
for(int i = 1; i<= n; ++i)
{
int p = i;
while(p-gap[t] >= 1)
{
if(v[p-gap[t]] > v[p])
{
swap(v[p-gap[t]], v[p]);
p = p-gap[t];
}
else break;
}
}
}
}
int main()
{
freopen(in, "r", stdin);
freopen(out, "w", stdout);
scanf("%d", &n);
for(int i = 1; i<= n; ++i) scanf("%d", &v[i]);
shellSort();
for(int i = 1; i<= n; ++i) printf("%d ", v[i]);
printf("\n");
return 0;
}