/* Реализовать шейкерную сортировку. */ public static void Task02() { Console.WriteLine("Шейкерная сортировка."); int[] ar = ArraysUtility.GenerateArray(10, 1, 50); ar.PrintArray(); ShakerSort(ar); ar.PrintArray(); }
/*Реализовать сортировку подсчетом.*/ private static void Task1() { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Сортировка подсчетом"); int max = 50; int[] A = ArraysUtility.GenerateArray(10, 0, max); A.PrintArray(); Console.WriteLine("Сортируем:"); CountingSort(A, max); A.PrintArray(); }
/* Реализовать бинарный алгоритм поиска в виде функции, * которой передается отсортированный массив. Функция возвращает * индекс найденного элемента или -1, если элемент не найден*/ public static void Task03() { int[] ar = ArraysUtility.GenerateArray(10, 1, 20); BubbleSort(ar); ar.PrintArray(); int findelement = 5; Console.WriteLine($"find:{findelement} index = [{ BinarySearch(ar, findelement)}]"); findelement = 7; Console.WriteLine($"find:{findelement} index = [{ BinarySearch(ar, findelement)}]"); findelement = 10; Console.WriteLine($"find:{findelement} index = [{ BinarySearch(ar, findelement)}]"); }
/* Попробовать оптимизировать пузырьковую сортировку. * Сравнить количество операций сравнения оптимизированной и * не оптимизированной программы. Написать функции сортировки, которые * возвращают количество операций. */ public static void Task01() { Console.ForegroundColor = ConsoleColor.Green; int[] ar1 = ArraysUtility.GenerateArray(10, 1, 50); // тестовый массив int[] ar2 = ar1.CopyArrray(); ar1.PrintArray(); int c1 = BubbleSort(ar1); int c2 = BubbleSortOptimize(ar2); ar1.PrintArray(); Console.WriteLine($"Итераций (обычная сортировка): {c1}"); Console.WriteLine($"Итераций (оптимизированная сортировка): {c2}"); }
/*Время работы сортировок.*/ private static void Task4() { #region Генерируем массивы Console.WriteLine(new string('+', 50)); Console.WriteLine("Генерируем массивы"); int[] I10 = ArraysUtility.GenerateIntArray(10); int[] I100 = ArraysUtility.GenerateIntArray(100); int[] I1000 = ArraysUtility.GenerateIntArray(1000); int[] I10000 = ArraysUtility.GenerateIntArray(10000); int[] I100000 = ArraysUtility.GenerateIntArray(100000); int[] I1000000 = ArraysUtility.GenerateIntArray(1000000); int[] I10000000 = ArraysUtility.GenerateIntArray(10000000); double[] D10 = ArraysUtility.GenerateArray(10); double[] D100 = ArraysUtility.GenerateArray(100); double[] D1000 = ArraysUtility.GenerateArray(1000); double[] D10000 = ArraysUtility.GenerateArray(10000); double[] D100000 = ArraysUtility.GenerateArray(100000); double[] D1000000 = ArraysUtility.GenerateArray(1000000); double[] D10000000 = ArraysUtility.GenerateArray(10000000); #endregion Console.WriteLine(new string('+', 50)); Console.WriteLine("\n------ !!! Пузырьковая сортировка (int) !!! -------"); Testing.TestedSort("I1_000 -", I1000.CopyArrray(), BubbleSort.Sort); Testing.TestedSort("I10_000 -", I10000.CopyArrray(), BubbleSort.Sort); Console.WriteLine("I100_000 - долго..."); Console.WriteLine("\n------ !!! Пузырьковая оптимизированная сортировка (int) !!! -------"); Testing.TestedSort("I1_000 -", I1000.CopyArrray(), BubbleSort.SortOptimize); Testing.TestedSort("I10_000 -", I10000.CopyArrray(), BubbleSort.SortOptimize); Console.WriteLine("I100_000 - долго..."); Console.WriteLine("\n------ !!! Cортировка вставкой (int) !!! -------"); Testing.TestedSort("I1_000 -", I1000.CopyArrray(), InsertionSort.Sort); Testing.TestedSort("I10_000 -", I10000.CopyArrray(), InsertionSort.Sort); Testing.TestedSort("I100_000 -", I100000.CopyArrray(), InsertionSort.Sort); Console.WriteLine("I1_000_000 - долго..."); Console.WriteLine("\n------ !!! Шейкерная сортировка (int) !!! -------"); Testing.TestedSort("I1_000 -", I1000.CopyArrray(), ShakerSort.Sort); Testing.TestedSort("I10_000 -", I10000.CopyArrray(), ShakerSort.Sort); Console.WriteLine("I100_000 - долго..."); Console.WriteLine("\n------ !!! Пирамидальная сортировка (int) !!! -------"); Testing.TestedSort("I1_000 -", I1000.CopyArrray(), HeapSort.Sort); Testing.TestedSort("I10_000 -", I10000.CopyArrray(), HeapSort.Sort); Testing.TestedSort("I100_000 -", I100000.CopyArrray(), HeapSort.Sort); Testing.TestedSort("I1_000_000 -", I1000000.CopyArrray(), HeapSort.Sort); Console.WriteLine("\n------ !!! Сортировка слиянием (int) !!! -------"); Testing.TestedSort("I1000 -", I1000.CopyArrray(), MergeSort.Sort); Testing.TestedSort("I10_000 -", I10000.CopyArrray(), MergeSort.Sort); Testing.TestedSort("I100_000 -", I100000.CopyArrray(), MergeSort.Sort); Testing.TestedSort("I1_000_000 -", I1000000.CopyArrray(), MergeSort.Sort); Testing.TestedSort("I10_000_000 -", I10000000.CopyArrray(), MergeSort.Sort); Console.WriteLine("\n------ !!! Быстрая сортировка (int) !!! -------"); Testing.TestedSort("I1_000 -", I1000.CopyArrray(), QuickSort.Sort); Testing.TestedSort("I10_000 -", I10000.CopyArrray(), QuickSort.Sort); Testing.TestedSort("I100_000 -", I100000.CopyArrray(), QuickSort.Sort); Testing.TestedSort("I1_000_000 -", I1000000.CopyArrray(), QuickSort.Sort); Console.WriteLine("I10_000_000 - долго..."); Console.WriteLine("\n------ !!! Быстрая сортировка (double) !!! -------"); Testing.TestedSort("D1_000 -", D1000.CopyArrray(), QuickSort.Sort); Testing.TestedSort("D10_000 -", D10000.CopyArrray(), QuickSort.Sort); Testing.TestedSort("D100_000 -", D100000.CopyArrray(), QuickSort.Sort); Testing.TestedSort("D1_000_000 -", D1000000.CopyArrray(), QuickSort.Sort); Testing.TestedSort("D10_000_000 -", D10000000.CopyArrray(), QuickSort.Sort); Console.WriteLine("\n Всё!!! Парам пам пам. "); }