예제 #1
0
        static void Main()
        {
            int[] arrayToInsertionSort = Utils.CreateRandomArray(10, 1000);
            int[] arrayToQuickSort     = Utils.CreateRandomArray(10, 1000);
            int[] arrayToMergeSort     = Utils.CreateRandomArray(10, 1000);

            Console.WriteLine("--------------------------------------------------");
            Console.WriteLine("Неотсортированный массив для сотрировки вставками:");
            Utils.Display(arrayToInsertionSort);
            Console.WriteLine("Неотсортированный массив для быстрой сортировки :");
            Utils.Display(arrayToQuickSort);
            Console.WriteLine("Неотсортированный массив для сортировки слиянием:");
            Utils.Display(arrayToMergeSort);
            Console.WriteLine("-------------------------------------------------");
            Console.WriteLine("\n");

            InsertionSort.DoInsertionSort(arrayToInsertionSort, 0, arrayToInsertionSort.Length - 1);
            QuickSort.DoQuickSort(arrayToQuickSort, 0, arrayToQuickSort.Length - 1);
            MergeSort.DoMergeSort(arrayToMergeSort, 0, arrayToMergeSort.Length - 1);

            Console.WriteLine("-----------------------------------------------");
            Console.WriteLine("Отсортированный массив для сотрировки вставками:");
            Utils.Display(arrayToInsertionSort);
            Console.WriteLine("Отсортированный массив для быстрой сортировки :");
            Utils.Display(arrayToQuickSort);
            Console.WriteLine("Отсортированный массив для сортировки слиянием:");
            Utils.Display(arrayToMergeSort);
            Console.WriteLine("-----------------------------------------------");
            Console.WriteLine("\n");

            SortMethod sortMethod   = QuickSort.DoQuickSort;
            double     timeForQuick = Utils.CountTimeForManySorts(100, 100000, 1000000, sortMethod);

            Console.WriteLine("Для быстрой сортировки:");
            Console.WriteLine($"Время: {timeForQuick}\n");


            sortMethod = MergeSort.DoMergeSort;
            double timeForMerge = Utils.CountTimeForManySorts(100, 100000, 1000000, sortMethod);

            Console.WriteLine("Для сортировки слиянием:");
            Console.WriteLine($"Время: {timeForMerge}\n");


            Console.WriteLine("-----------------------------------------------");
            Console.WriteLine("Для гибридной быстрой сортировки:");
            SortHybridMethod sortHybridMethod = QuickSort.DoHybridQuickSort;

            (int optimalQuickSortK, double timeForQuickSortK) = Utils.FindOptimalElement(100, 100000, 1000000, sortHybridMethod);
            Console.WriteLine($"Оптимальное k: {optimalQuickSortK}\nВремя: {timeForQuickSortK}\n");


            Console.WriteLine("-----------------------------------------------");
            Console.WriteLine("Для гибридной сортировки слиянием:");
            sortHybridMethod = MergeSort.DoHybridMergeSort;
            (int optimalMergeSortK, double timeForMergeSortK) = Utils.FindOptimalElement(100, 100000, 1000000, sortHybridMethod);
            Console.WriteLine($"Оптимальное k: {optimalMergeSortK}\nВремя: {timeForMergeSortK}\n");
        }
예제 #2
0
        public void TestSort(int[] input, int[] expected)
        {
            MergeSort sorter = new MergeSort();

            //Act
            sorter.DoMergeSort(input);

            //Assert
            for (int i = 0; i < input.Length; i++)
            {
                Assert.AreEqual(expected[i], input[i]);
            }
        }