Programa Java para BogoSort o Permutation Sort

BogoSort, también conocido como clasificación por permutación, clasificación estúpida, clasificación lenta, clasificación de escopeta o clasificación de mono, es un algoritmo particularmente ineficaz basado en el paradigma de generación y prueba. El algoritmo genera sucesivamente permutaciones de su entrada hasta que encuentra una que está ordenada. ( Wiki
Por ejemplo, si se utiliza bogosort para ordenar una baraja de cartas, consistiría en comprobar si la baraja estaba en orden y si no lo estaba. , uno tiraría la baraja al aire, recogería las cartas al azar y repetiría el proceso hasta que se ordenara la baraja. 
Pseudocódigo: 
 

while not Sorted(list) do
    shuffle (list)
done

Java

// Java Program to implement BogoSort
public class BogoSort {
    // Sorts array a[0..n-1] using Bogo sort
    void bogoSort(int[] a)
    {
        // if array is not sorted then shuffle the
        // array again
        while (isSorted(a) == false)
            shuffle(a);
    }
 
    // To generate permutation of the array
    void shuffle(int[] a)
    {
        // Math.random() returns a double positive
        // value, greater than or equal to 0.0 and
        // less than 1.0.
        for (int i = 0; i < a.length; i++)
            swap(a, i, (int)(Math.random() * i));
    }
 
    // Swapping 2 elements
    void swap(int[] a, int i, int j)
    {
        int temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
 
    // To check if array is sorted or not
    boolean isSorted(int[] a)
    {
        for (int i = 1; i < a.length; i++)
            if (a[i] < a[i - 1])
                return false;
        return true;
    }
 
    // Prints the array
    void printArray(int[] arr)
    {
        for (int i = 0; i < arr.length; i++)
            System.out.print(arr[i] + " ");
        System.out.println();
    }
 
    public static void main(String[] args)
    {
        // Enter array to be sorted here
        int[] a = { 3, 2, 5, 1, 0, 4 };
        BogoSort ob = new BogoSort();
 
        ob.bogoSort(a);
 
        System.out.print("Sorted array: ");
        ob.printArray(a);
    }
}
Producción: 

Sorted array: 0 1 2 3 4 5

 

Complejidad del tiempo:

Peor caso: O(∞) (dado que este algoritmo no tiene límite superior)
Caso promedio: O(n*n!)
Mejor caso: O(n)(cuando la array dada ya está ordenada)

Espacio Auxiliar: O(1)

Consulte el artículo completo sobre BogoSort o Permutation Sort para obtener más detalles.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *