Beispiel #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Wybierz rodzaj sortowania");
            Console.WriteLine("1.Insertion");

            string input = Console.ReadLine();
            if (input == "1")
            {
                Console.WriteLine("Podaj wielkość tablicy");
                string input2 = Console.ReadLine();
                int size = Convert.ToInt32(input2);

                Insertion insertion = new Insertion(size);

                insertion.f_FillTable();

                Console.WriteLine("Przed sortowaniem:");
                insertion.f_WriteItDown();

                Console.WriteLine("Nacisnij Enter aby posortowac");
                Console.ReadKey();

                insertion.f_Sort();

                Console.WriteLine("Po sortowaniu:");
                insertion.f_WriteItDown();

                Console.ReadKey();

            }
        }
Beispiel #2
0
        /// <summary>
        /// Быстрая сортировка - нерекурсивная реализация со вспомогательной сортировкой вставками
        /// </summary>
        public static void QuickSortStackedInsertion(List <Item> data, int l, int r)
        {
            Stack <int> s = new Stack <int>();

            s.Push(r);
            s.Push(l);
            int M = 9;

            while (s.Count != 0)
            {
                l = s.Pop();
                r = s.Pop();
                if (r - 1 < M)
                {
                    continue;
                }
                int i = Partition(data, l, r);
                if (i - 1 < r - i && r > l)
                {
                    s.Push(i - 1);
                    s.Push(l);
                    s.Push(r);
                    s.Push(i + 1);
                }
                else if (r > l)
                {
                    s.Push(r);
                    s.Push(i + 1);
                    s.Push(i - 1);
                    s.Push(l);
                }
            }
            Insertion.InsertionSortLv3(data, l, r);
        }