You are on page 1of 1

#include <iostream>

using namespace std;

int main()
{
//initializarea vectorului
int a[100]={169, 639, 570, 737, 415, 820, 515, 384, 232, 451, 892, 229,
273, 255, 737, 599, 54, 308, 584, 498, 498, 159, 704, 996, 692, 561, 177, 283,
305, 316, 620, 53, 802, 834, 700, 409, 610, 1, 481, 413, 55, 581, 437, 207,
321, 992, 720, 493, 198, 696, 493, 488, 157, 886, 663, 772, 589, 488, 377,
278, 499, 112, 401, 354, 804, 131, 73, 630, 102, 131, 471, 429, 993, 324, 434,
213, 735, 832, 506, 898, 51, 467, 117, 863, 625, 558, 200, 760, 86, 992, 986,
470, 883, 382, 175, 709, 164, 950, 896, 126};
int i, j, aux, n=0;
//afisarea vectorului initial
cout << "Vectorul intial este:" <<endl;
for(i=0;i<100;i++)
{
cout << a[i] << "\t";
}

//sortarea
int h = 1; n++;
while ((h * 3 + 1) < 100)
{
h = 3 * h + 1; n++;
}
while( h > 0 )
{
for (int i = h - 1; i < 100; i++)
{
aux = a[i]; n++;
int j = i; n++;
for( j = i; (j >= h) && (a[j-h] > aux); j -= h)
{
a[j] = a[j-h]; n++;
}
a[j] = aux; n++;
}
h = h / 3; n++;
}
//afisarea vectorului sortat
cout << "Vectorul sortat este:" <<endl;
for(i=0;i<100;i++)
{
cout << a[i] << "\t";
}
//afisarea numarului de operatii
cout << "Au fost efectuate " << n << " operatii.";
return 0;
}

You might also like