public string Test() { // Список для хранения среднего времени работы каждого алгоритма var times = new List <double>(); CurrSort currSort = Sorts.Bubble; // три сортировки - три вызова функции сортировки times.Add(Compare(currSort)); currSort = Sorts.Shell; times.Add(Compare(currSort)); currSort = Sorts.Quick; times.Add(Compare(currSort)); currSort = Sorts.Radix; times.Add(Compare(currSort)); /*(currSort = Sorts.HeapSort; * times.Add(Compare(currSort)); */ // Получение среднего арифметического времени работы алгоритма // путем деления времени на кол-во итераций for (var i = 0; i < 3; i++) { times[i] = times[i] / QuantIterations; } var info = $"Итераций: {QuantIterations}, Размер массива: {DataSequence.Count}\n " + $"Пузырек: {times[0]}мс\n Шелл: {times[1]}мс\n Быстрая сортировка: {times[2]}мс\n" + $" Поразрядная: {times[3]}мс\n"; return(info); }
/// <summary> /// Получение общего времени работы алгоритма (для определения среднего времени работы) /// </summary> /// <param name="sort">Делегат необходимого метода</param> /// <returns>Общее время работы</returns> private double CheckTime(CurrSort sort) { var stopWatch = new Stopwatch(); // Метод алгоритма вызывается необходимое кол-во раз // и засекается скорость работы алгоритма for (var i = 0; i < Data.QuantIterations; i++) { stopWatch.Start(); sort(Data.DataSequence.ToArray()); stopWatch.Stop(); } return(stopWatch.Elapsed.TotalMilliseconds); }
public void Execute(List <int> param) { try { if (Data.QuantIterations > 0 && Data.DataSequence.Count > 0) { // Список для хранения среднего времени работы каждого алгоритма var times = new List <double>(); // Список всех реализованных сортировок var allSorts = new CurrSort[] { Sorts.Bubble, Sorts.Shell, Sorts.Quick, Sorts.DefaultSort }; // Получение среднего арифметического времени работы алгоритма // путем деления времени на кол-во итераций for (var i = 0; i < 4; i++) { times.Add(CheckTime(allSorts[i]) / Data.QuantIterations); } var info = string.Format("Итераций: {0}, Размер массива: {1}\n " + "Пузырек: {2}мс\n Шелл: {3}мс\n Быстрая сортировка: {4}мс\n Встроенная сортировка: {5}мс\n", Data.QuantIterations, Data.DataSequence.Count, times[0], times[1], times[2], times[3]); Console.WriteLine(info); } else { throw new NoNullAllowedException(); } } catch (NoNullAllowedException) { Console.WriteLine("Недопустимое кол-во итераций или " + "элементов тестовой последовательности, возможно вы их не задали."); } catch (Exception e) { Console.WriteLine(e); } }
/// <summary> /// Получение общего времени работы алгоритма (для определения среднего времени работы) /// </summary> /// <param name="sort">Делегат необходимого метода</param> /// <returns>Общее время работы</returns> private double Compare(CurrSort sort) { double times = 0.0; // Общее время работы алгоритма var stopWatch = new Stopwatch(); // Таймер // Метод алгоритма вызывается необходимое кол-во раз // и суммируются скорости работы алгоритма for (var i = 0; i < QuantIterations; i++) { stopWatch.Restart(); sort(DataSequence.ToArray()); stopWatch.Stop(); var ts = stopWatch.Elapsed; // Прибавляем время работы алгоритма в миллисекундах times += ts.TotalMilliseconds; } return(times); }