Java排序算法——猴子排序(Bogo Sort)

此排序和之前介绍的三种排序没有任何关系,只是单纯在整理排序算法突然想到曾经看到过关于此排序的描述,现在总结一下。

之前三种排序的传送门开一下:

 冒泡排序:

Java排序算法——冒泡排序(Bubble Sort)https://blog.csdn.net/babbfqb93/article/details/123005968简单选择排序:

Java排序算法——选择排序(Selection Sort)https://blog.csdn.net/babbfqb93/article/details/123040023

 直接插入排序:

Java排序算法——插入排序(Insertion Sort)https://blog.csdn.net/babbfqb93/article/details/123043711引用一下百度百科——无限猴子理论

       爱丁顿在1929年阐述过一个“无限猴子理论”,就是说“如果许多猴子任意敲打打字机键,最终可能会写出大英博物馆所有的书”。

 所以,算法中也存在这样的一种排序算法,猴子排序...

简单地说就是随便乱排,代码实现:

public static void bogoSort(int[] iArray){
    Random r = new Random();
    int num = 0;
    while(true) {
        System.out.println("正在执行第"+(++num)+"次排序");
        System.out.println("排序之前:"+ Arrays.toString(iArray));
        for (int i = 0; i < iArray.length; i++) {
            swap(iArray, i, r.nextInt(iArray.length));
        }
        if(isSorted(iArray)){
            System.out.println("排序成功");
            System.out.println("排序之后:"+ Arrays.toString(iArray));
            return;
        }

    }
}

判断是否成功的代码:

public static boolean isSorted(int[] iArrays) {
    for (int i = 0; i < iArrays.length - 1; i++) {
        if(iArrays[i]>iArrays[i+1]){
            return false;
        }
    }
    return true;
}

交换和随机生成逻辑代码:

//初始换一个长度为参数的随机数组,数组元素为0(含)到50(不含)的随机数
public static int[] initArray(int length){
    Random r = new Random();//申明并实例化一个Random对象
    int[] iArray = new int[length];//申明并实例化一个int数组用于测试排序
    for (int i = 0; i < iArray.length; i++) {
        //通过Random随机生成一个0(含)到50(不含)的数并插入对应位置
        iArray[i] = r.nextInt(50);
    }
    return iArray;
}

//交换
public static void swap(int[] iArray,int i,int j){
    int tmp = iArray[i];
    iArray[i] = iArray[j];
    iArray[j] = tmp;
}

最后主方法入口:

public static void main(String[] args) {
    int[] iArrays = initArray(5);
    bogoSort(iArrays);
}

实现结果...

Java排序算法——猴子排序(Bogo Sort)_第1张图片

嗯,就是一个随机排序,纯粹看脸,大家也戏称为“欧皇排序”...

好,我说完了。

你可能感兴趣的:(Java排序算法,java,排序算法,开发语言)