コード例 #1
0
        static void Main(string[] args)
        {
            int arraysNum = 30;
            int arraySize = 5000;
            int maxValue  = 500;
            int tableSize = 2000;

            int[][]  arrays   = ArrayGenerator.GenerateArrays(arraysNum, arraySize, maxValue);
            double[] constans = new[]
            {
                0.6180339887,
                0.33333333,
                0.5,
                0.125,
                0.9131654,
                1
            };

            Console.WriteLine(
                $"Arrays number = {arraysNum}, each array size = {arraySize},\n"
                + $"maximal value = {maxValue}, table size = {tableSize}.\n"
                );
            for (int i = 0; i < constans.Length; i++)
            {
                if (i == 0)
                {
                    Console.WriteLine("--------------\n\nStandart constant is ((Math.Sqrt(5) - 1) / 2)");
                }
                Console.WriteLine(
                    $"Test for A = {constans[i]}\n" +
                    $"   In average chains have maximum length of " +
                    $"{GetAverageMaxChainLength(constans[i], tableSize, arrays)}\n"
                    );
                if (i == 0)
                {
                    Console.WriteLine("--------------\n\nSelecting better constant:\n");
                }
            }

            Console.WriteLine("--------------\n");
            double calculatedA = GetTheBestConst(tableSize, arrays, 10);

            Console.WriteLine(
                $"Calculated constant is {calculatedA}\n" +
                $"In average chains with that A have maximum length " +
                $"of {GetAverageMaxChainLength(calculatedA, tableSize, arrays)}"
                );
            Console.WriteLine("\n--------------");
            Console.ReadKey();
        }