Cod sursa(job #1239793)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 9 octombrie 2014 20:06:37
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <iostream>
#include <cstdio>
#define MAXN 500010

using namespace std;

int n, a[MAXN];

void shellSort()
{
    int h=1;
    while (h < n/3) h *= 3;
    while(h)
    {
        for (int i = h; i < n; i++)
            for (int j = i; j >= h && a[j]<a[j-h]; j-=h)
                {int aux = a[j]; a[j] = a[j-h]; a[j-h] = aux;}
        h/=3;
    }
}

int main()
{
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);

    scanf("%d", &n);
    for (int i = 0; i < n; i++)
        scanf("%d", &a[i]);
    shellSort();
    for (int i = 0; i < n; i++)
        printf("%d ", a[i]);
    return 0;
}