Cod sursa(job #1534873)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 24 noiembrie 2015 00:39:06
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#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;
}