C# コームソート

using System;
using System.Collections.Generic;

public static class Program
{
    enum Flag { Continue, Break };
    public static void CombSort<T>(T[] arr, Comparison<T> comparison)
    {
        Int32 gap = arr.Length;
        Flag flag = Flag.Continue;

        while (flag == Flag.Continue || gap > 1)
        {
            flag = Flag.Break;
            gap = (Int32)(gap / 1.3);
            if (gap == 0)
            {
                gap = 1;
            }

            for (Int32 i = 0; i + gap < arr.Length; i++)
            {
                if (comparison(arr[i], arr[i + gap]) > 0)
                {
                    //Swap
                    T hold = arr[i];
                    arr[i] = arr[i + gap];
                    arr[i + gap] = hold;
                    flag = Flag.Continue;
                }
            }
        }
    }

    static void Main()
    {
        Random random = new Random();
        Int32[] arr = new Int32[1000];
        for (Int32 i = 0; i < arr.Length; i++)
        {
            arr[i] = random.Next() % arr.Length;
        }

        CombSort(arr, (x, y) => { return x.CompareTo(y); });
        Array.ForEach(arr, (n) => Console.WriteLine(n));
    }
}