Cod sursa(job #1126480)

Utilizator pitradaPit-Rada Ionel-Vasile pitrada Data 26 februarie 2014 23:46:49
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
using namespace std;

int gaps[300002] = {1, 4, 10, 23, 57, 132, 301, 701}, gap;
int a[500002],n,i,j,temp;
fstream fin, fout;
int main()
{
    fin.open("algsort.in",ios::in);
    fout.open("algsort.out",ios::out);
    fin>>n;
    for (i=0;i<n;i++)fin>>a[i];
    for (i=8;i<n/2;i++)
        gaps[i]=gaps[i-1] * 1.25 + 1;
    for (gap=n/2-1; gap>=0;gap--)
    {
    //Do an insertion sort for each gap size.
        for (i = gap; i < n; i++)
        {
            temp = a[i];
            for (j = i; j >= gap && a[j - gap] > temp; j -= gap)
            {
                a[j] = a[j - gap];
            }
            a[j] = temp;
        }
    }
    for (i=0;i<n;i++) fout<<a[i]<<" ";
    fin.close();
    fout.close();
    return 0;
}