using System; using System.Collections.Generic; namespace Bogo_sort { class Program { static void Main(string[] args) { List list = new List() { 2, 1, 3, 0 }; Console.WriteLine("Sorting..."); Bogo_sort(list, true, 5); Console.WriteLine("Press any key to exit."); Console.ReadKey(); } static void Bogo_sort(List list, bool announce, int delay) { int iteration = 0; while (!IsSorted(list)) { if (announce) { Print_Iteration(list, iteration); } if (delay != 0) { System.Threading.Thread.Sleep(Math.Abs(delay)); } list = Remap(list); iteration++; } Print_Iteration(list, iteration); Console.WriteLine(); Console.WriteLine("Bogo_sort completed after {0} iterations.", iteration); } static void Print_Iteration(List list, int iteration) { Console.Write("Bogo_sort iteration {0}: ", iteration); for (int i = 0; i < list.Count; i++) { Console.Write(list[i]); if (i < list.Count) { Console.Write(" "); } } Console.WriteLine(); } static bool IsSorted(List list) { for (int i = 0; i < list.Count - 1; i++) { if (list[i] > list[i + 1]) { return false; } } return true; } static List Remap(List list) { int temp; List newList = new List(); Random r = new Random(); while (list.Count > 0) { temp = (int)r.Next(list.Count); newList.Add(list[temp]); list.RemoveAt(temp); } return newList; } } }