Beispiel #1
0
 // Конструктор на основе уже существующего массива - простой клонер-копировщик:
 public ArraySort(ArraySort arrOld)
 {
     size = arrOld.getSize();       // Выставляем размер массива
     arr  = new int[size];          // Выделяем место под массив
     for (int i = 0; i < size; i++) // И копируем поэлементно
     {
         arr[i] = arrOld.arr[i];
     }
 }
Beispiel #2
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Введите число элементов, начало и конец диапазона через пробел:");

            string[] stroka = Console.ReadLine().Split(' ');

            int size   = int.Parse(stroka[0]);
            int start  = int.Parse(stroka[1]);
            int finish = int.Parse(stroka[2]);

            //int maxSize = 100;

            /*ArraySort arr = new ArraySort(maxSize);
             * arr.add(77);
             * arr.add(99);
             * arr.add(44);
             * arr.add(55);
             * arr.add(22);
             * arr.add(88);
             * arr.add(11);
             * arr.add(00);
             * arr.add(66);
             * arr.add(33); */
            ArraySort arr = new ArraySort(size, start, finish);
            ArraySort arr1;     // Ссылка на массив, будет храниться копия исходного сформированного массива

            // arr.display();

            Stopwatch stopwatch;             // Объект стопвотча, будем считать время сортировки

            arr1      = new ArraySort(arr);  // Делаем копию сходного массива для текущей сортировки
            stopwatch = new Stopwatch();
            stopwatch.Start();
            arr1.insertionSort();     // Сортировка вставками
            stopwatch.Stop();
            Console.WriteLine("Длительность сортировки прямыми вставками: " + (stopwatch.ElapsedMilliseconds).ToString() + " мс");
            // arr1.display();

            arr1      = new ArraySort(arr);
            stopwatch = new Stopwatch();
            stopwatch.Start();
            arr1.insertionSortBisection();     // Сортировка вставками
            stopwatch.Stop();
            Console.WriteLine("Длительность сортировки прямыми вставками с бисекцией: " + (stopwatch.ElapsedMilliseconds).ToString() + " мс");
            // arr1.display();

            arr1      = new ArraySort(arr);
            stopwatch = new Stopwatch();
            stopwatch.Start();
            arr1.quickSort();     // Быстрая сортировка рекурсией
            stopwatch.Stop();
            Console.WriteLine("Длительность быстрой сортировки с рекурсией: " + (stopwatch.ElapsedMilliseconds).ToString() + " мс");
            // arr1.display();

            arr1      = new ArraySort(arr);
            stopwatch = new Stopwatch();
            stopwatch.Start();
            arr1.quickSortNonRecursive();     // Быстрая сортировка рекурсией
            stopwatch.Stop();
            Console.WriteLine("Длительность быстрой сортировки без рекурсии: " + (stopwatch.ElapsedMilliseconds).ToString() + " мс");
            // arr1.display();

            arr1      = new ArraySort(arr);
            stopwatch = new Stopwatch();
            stopwatch.Start();
            arr1.selectionSort();     // Сортировка прямым выбором
            stopwatch.Stop();
            Console.WriteLine("Длительность сортировки прямым выбором: " + (stopwatch.ElapsedMilliseconds).ToString() + " мс");
            // arr1.display();

            arr1      = new ArraySort(arr);
            stopwatch = new Stopwatch();
            stopwatch.Start();
            arr1.bubbleSort();     // Сортировка прямого обмена (Пузырьковая сортировка)
            stopwatch.Stop();
            Console.WriteLine("Длительность сортировки пузырьком: " + (stopwatch.ElapsedMilliseconds).ToString() + " мс");
            // arr1.display();

            arr1      = new ArraySort(arr);
            stopwatch = new Stopwatch();
            stopwatch.Start();
            arr1.shakerSort();     // Шейкерная сортировка (хождение зигзагом с сужением границ, модификация пузырьковой сортировки)
            stopwatch.Stop();
            Console.WriteLine("Длительность шейкерной сортировки: " + (stopwatch.ElapsedMilliseconds).ToString() + " мс");
            // arr1.display();

            arr1      = new ArraySort(arr);
            stopwatch = new Stopwatch();
            stopwatch.Start();
            arr1.shellSort();     // Сортировки Шелла (несколько последовательных сортировок с разной дальностью):
            stopwatch.Stop();
            Console.WriteLine("Длительность сортировки Шелла: " + (stopwatch.ElapsedMilliseconds).ToString() + " мс");
            // arr1.display();

            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }