Code source tri "Shell"

void tri_shell(int tableau[],int longueur)
     {
     int n, i, j, valeur;

     n=0;
        
     while(n<longueur)
         {
         n=3*n+1;
         }
        
     while(n!=0)
         {
         n=n/3;
         for (i=n;i<longueur;i++)
             {
             valeur=tableau[i];
             j=i;

             while((j>(n-1)) && (tableau[j-n]>valeur))
                 {
                 tableau[j]=tableau[j-n];
                 j=j-n;
                 }
             tableau[j]=valeur;
             }
         }
     }