Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2017, 10:45   #1
Andry95
Пользователь
 
Регистрация: 01.03.2016
Сообщений: 24
По умолчанию Двунаправленная сортировка

Как сделать вывод на экран каждого шага сортировки?
И как ввести массив с клавиатуры?
Код:
class Program
    {
        static void Main(string[] args)
        {
            Sort();
                }
        static void Sort()
        {
 
            int[] myint = { 101, 88, 77, 66, 75, 44, 33, 22, 11, 8, 5, 3, 1, 4 };         
                     
            WriteArray(myint);
            ShakerSort(myint);
            WriteArray(myint);
 
            Console.ReadLine();
        }
        /* Шейкер-сортировка */
        static void ShakerSort(int[] myint)
        {
            int left = 0, //левая граница
                right = myint.Length - 1, //правая граница
                count = 0;
 
            while (left <= right)
            {
                for (int i = left; i < right; i++)  //Сдвигаем к концу массива "тяжелые элементы"
                {
                    count++;
                    if (myint[i] > myint[i + 1])
                        Swap(myint, i, i + 1); //swap функция обмена
                }
                right--;// уменьшаем правую границу
 
                for (int i = right; i > left; i--) //Сдвигаем к началу массива "легкие элементы"
                {
                    count++;
                    if (myint[i - 1] > myint[i])
                        Swap(myint, i - 1, i);//swap функция обмена
                }
                left++; // увеличиваем левую границу
            }
            Console.WriteLine("\nКоличество сравнений = {0}", count.ToString());
        }
 
        /* Поменять элементы местами */
        static void Swap(int[] myint, int i, int j) //swap функция обмена
        {
            int glass = myint[i];
            myint[i] = myint[j];
            myint[j] = glass;
        }
 
        /*Вывести массив*/
        static void WriteArray(int[] a)
        {
            foreach (int i in a)
                Console.Write("{0} ", i.ToString());
            Console.WriteLine("\n\n\n");
        }
    }
Andry95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двунаправленная очередь - упорядочить + др.. bfgman Паскаль, Turbo Pascal, PascalABC.NET 0 27.12.2012 15:06
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57