Случайная сортировка

Случайная сортировка (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();
    }
}

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

Смотрите также: