Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        /// <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);
        }