static double RunTest(int collectionSize, ISortImplementation algo)
        {
            var iterationCount = 0;
            var minElapsedTime = TimeSpan.FromSeconds(2);
            var chrono         = new Stopwatch();

            Debug.Assert(Stopwatch.IsHighResolution);

            algo.SetCollection(GenerateRandomInts(collectionSize));

            do
            {
                chrono.Start();
                algo.Sort();
                chrono.Stop();
                iterationCount++;
            }while (chrono.Elapsed < minElapsedTime);

            return(chrono.Elapsed.TotalMilliseconds / iterationCount);
        }