Esempio n. 1
0
        static double CountTimeForOneSort(int[] arrayToSort, int k, Program.SortHybridMethod sortMethod)
        {
            long startTime = DateTime.Now.Ticks;

            sortMethod(arrayToSort, 0, arrayToSort.Length - 1, k);

            long endTime = DateTime.Now.Ticks - startTime;

            return(endTime);
        }
Esempio n. 2
0
        public static (int, double) FindOptimalElement(int amountOfArrays, int sizeOfArray, int maxValueOfElement, Program.SortHybridMethod sortMethod)
        {
            int k = 1;

            double minimalTime    = Double.MaxValue;
            int    OptimalElement = -1;
            double currentTime    = 0;

            int[][] arrayOfArrays = new int[amountOfArrays][];

            for (int i = 0; i < amountOfArrays; i++)
            {
                arrayOfArrays[i] = CreateRandomArray(sizeOfArray, maxValueOfElement);
            }

            while (k <= 10)
            {
                for (int i = 0; i < amountOfArrays; i++)
                {
                    currentTime += CountTimeForOneSort((int[])arrayOfArrays[i].Clone(), k, sortMethod);
                }

                currentTime /= amountOfArrays;

                Console.WriteLine($"k = {k}, time = {currentTime}");

                if (minimalTime > currentTime)
                {
                    minimalTime    = currentTime;
                    OptimalElement = k;
                }

                currentTime = 0;
                k++;
            }

            return(OptimalElement, minimalTime);
        }