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); }
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); }