using System;

namespace Algorithme
{
    public class MainClass
    {
        public static void Main()
        {
            int[] iArrary = new int[] {1,5,3,6,10,55,9,2,87,12,34,75,33,47};
            ShellSorter sh = new ShellSorter();
            sh.Sort(iArrary);
            for (int m = 0; m <= 13; m++)
            {
                Console.WriteLine("{0}", iArrary[m]);
            }
            Console.ReadLine();
        }
    }
    class ShellSorter
    {
        public void Sort(int[] list)
        {
            int inc;
            for (inc = 1; inc <= list.Length / 9; inc = 3 * inc + 1) ;
            { 
                for (; inc > 0; inc /= 3)
                {
                    for (int i = inc + 1; i <= list.Length; i += inc)
                    {
                        int t = list[i - 1];
                        int j = i;
                        while ((j > inc) && (list[j - inc - 1] > t))
                        {
                            list[j - 1] = list[j - inc - 1];
                            j -= inc;
                        }
                        list[j - 1] = t;
                    }
                }
            }
        }
    }
}