Pagini recente » Cod sursa (job #2640115) | Cod sursa (job #420208) | Cod sursa (job #3207122) | Cod sursa (job #3030123) | Cod sursa (job #1734290)
#include <bits/stdc++.h>
using namespace std;
template<typename T>
void shellsort_robert( T *a, T *b )
{
T v;
size_t i, j, k, h;
size_t incs[16] = { 1391376, 463792, 198768, 86961, 33936,
13776, 4592, 1968, 861, 336,
112, 48, 21, 7, 3, 1 };
int _len = b - a ;
int aux;
for ( k = 0; k < 16; k++)
for (h = incs[k], i = h; i < _len; i++)
{
v = a[i]; j = i;
while (j >= h && a[j-h] > v)
{
//a[j] = a[j-h];
//swap( a[j] , a[j-h] );
aux = a[j];
a[j] = a[j-h];
a[j-h] = aux;
j -= h;
}
//a[j] = v;
//swap(a[j] , v );
aux = a[j];
a[j] = v;
v = aux;
}
}
int main()
{
const int NN = 500006;
int a[NN];
ifstream f("algsort.in");
ofstream g("algsort.out");
int n;
f >> n;
for(int i=0;i<n;++i)
f >> a[i];
shellsort_robert(a , a+n);
for(int i=0;i<n;++i)
g << a[i] <<" ";
return 0;
}