ShellSort.Sort C# (CSharp) Method

Sort() public method

利用希尔排序将数组按升序排序。
public Sort ( Array, a ) : void
a Array, 需要排序的数组。
return void
    public override void Sort<T>(T[] a)
    {

        var n = a.Length;

        var h = 1;
        while (h < n / 3)
        {
            h = 3 * h + 1;
        }

        while (h >= 1)
        {
            var compareTime = 0;
            for (var i = h; i < n; i++)
            {
                for (var j = i; j >= h && Less(a[j], a[j - h]); j -= h)
                {
                    compareTime++;
                    Exch(a, j, j - h);
                }
            }
            Debug.Assert(IsHSorted(a, h));
            Console.Write("h:" + h + "\t");
            Console.WriteLine("CompareTime/ArraySize = " + (double)compareTime / a.Length);
            h /= 3;
                
        }
        Debug.Assert(IsSorted(a));
            
    }

Usage Example

        public void Test()
        {
            ShellSort <Int32> sort = new ShellSort <Int32>();

            Int32[] array = SortData.CreateUnsortedArray();

            sort.Sort(array);

            Assert.True(SortData.VerifyArrayIsSorted(array));
        }
All Usage Examples Of ShellSort::Sort