Pagini recente » Cod sursa (job #1149675) | Cod sursa (job #1120473) | Cod sursa (job #2798351) | Cod sursa (job #2150269) | Cod sursa (job #1126480)
#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;
}