Cod sursa(job #256791)

Utilizator zalmanDanci Emanuel Sebastian zalman Data 12 februarie 2009 10:33:38
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>
#define fin "algsort.in"
#define fout "algsort.out"
#define dim 500001
int v[dim], N;

void shell();
int main(void)
{
 freopen(fin,"r",stdin);
 freopen(fout,"w",stdout);
 scanf("%d", &N);
 for (register int i = 1; i <= N; i++)
  scanf("%d", v+i);
 shell();

 for(register int i = 1; i <= N ;i++)
  printf("%d ", v[i]);

  printf("\n");
  fcloseall();
  return 0;


}

void shell(void)
{
 int inj, gata, aux;
 inj = N;
 while(inj > 1)
 {
  inj /= 2;
  do
  {
   gata = 1;
   for(register int i = 1; i <= N-inj; i++)
    if( v[i] > v[i+inj])
    {
     aux = v[i];
     v[i] = v[i+inj];
     v[i+inj] = aux;
     gata = 0;
    }
  }while(!gata);
 }
}