Shell sort

1 minute read

Shell algorithm is a sorting algorithm.

The principle is use a interval for switching two values’ positions, and the interval will also reduce, like from 9 to 8 to 7 to 5 …0

Here is an implementation in CSharp.

public static void ShellSort(int[] numbers, int size)
{
    int i, j, increment, temp;
    increment = 3;
    while (increment > 0)
    {
        for (i = 0; i < size; i++)
        {
            j = i;
            temp = numbers[i];
            while ((j >= increment) && (numbers[j - increment] > temp))
            {
                numbers[j] = numbers[j - increment];
                j = j - increment;
            }
            numbers[j] = temp;
        }

        if (increment / 2 != 0)
        {
            increment = increment / 2;
        }
        else if (increment == 1)
        {
            increment = 0;
        }
    }
}

To test it, you just need to initialize an array or list.

public static void Main()
{
    int[] arr = { 20, 5, 6, 100, 899, 4, 20, 9, 18, 29, 0 };
    Console.WriteLine("Before shell sort:");
    Display(arr);

    ShellSort(arr, arr.Length);

    Console.WriteLine("After shell sort:");
    Display(arr);

    Console.ReadKey();
}

I hope you will like this post! Enjoy coding!

SUN Jiangong

SUN Jiangong

A senior .NET engineer, software craftsman. Passionate about new technologies.