Випадкове сортування

Випадкове сортування (Bogosort) – один з найбільш не ефективних алгоритмів сортування масивів.

Опис алгоритму Bogosort

Алгоритм випадкового сортування полягає в наступному: на початку масив перевіряється на впорядкованість, якщо елементи не відсортовані, то змішуємо їх випадковим чином і знову перевіряємо, операції повторюємо до тих пір, поки масив не буде відсортовано.

Реалізація випадкового сортування

using System;

class Program
{
    //метод для перевірки впорядкованості масиву
    static bool IsSorted(int[] a)
    {
        for (int i = 0; i < a.Length - 1; i++)
        {
            if (a[i] > a[i + 1])
                return false;
        }

        return true;
    }

    //перемішування елементів масиву
    static int[] RandomPermutation(int[] a)
    {
        Random random = new Random();
        var n = a.Length;
        while (n > 1)
        {
            n--;
            var i = random.Next(n + 1);
            var temp = a[i];
            a[i] = a[n];
            a[n] = temp;
        }

        return a;
    }

    //випадкове сортування
    static int[] BogoSort(int[] a)
    {
        while(!IsSorted(a))
        {
            a = RandomPermutation(a);
        }

        return a;
    }
    
    static void Main(string[] args)
    {
        Console.WriteLine("Випадкове сортування");
        Console.Write("Введіть елементи масиву: ");
        var parts = Console.ReadLine().Split(new[] { " ", ",", ";" }, StringSplitOptions.RemoveEmptyEntries);
        var array = new int[parts.Length];
        for (int i = 0; i < parts.Length;i++)
        {
            array[i] = Convert.ToInt32(parts[i]);
        }

        Console.WriteLine("Відсортований масив: {0}", string.Join(", ", BogoSort(array)));

        Console.ReadLine();
    }
}

Результат роботи програми:

Дивіться також: