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(); } }
/// <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); }