Cod sursa(job #240083)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 6 ianuarie 2009 20:08:40
Problema Sortare prin comparare Scor 40
Compilator c Status done
Runda Arhiva educationala Marime 0.76 kb
/*

Shell Sort

*/

#include <stdio.h>
#define N 1000100
int v[N];
void shellsort(int n){
     int i, j, h, a;
     h=0; 
     while (h<=n)
           h=3*h+1;
     while (h!=1){
           h/=3;
           for (i=h+1;i<n;++i){
               a=v[i];
               j=i;
               while (v[j-h]>a){
                     v[j]=v[j-h];
                     j-=h;
                     if (j<=h)
                        break;
               }
               v[j]=a;
           }
     }
}
int main(){
    int i,n;
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);
    for (i=1;i<=n;++i)
       scanf("%d",&v[i]);
    shellsort(n);
    for (i=1;i<=n;++i)
       printf("%d ",v[i]);
    return 0;
}