Cod sursa(job #1734290)

Utilizator bogdanpaunFMI Paun Bogdan Gabriel bogdanpaun Data 26 iulie 2016 23:13:04
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#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;
}