欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

猴子排序(Bogo Sort)算法的Java实现

程序员文章站 2024-03-12 20:10:26
...

猴子排序(Bogosort)是一个很有趣也很容易理解的算法,算法的逻辑简单来说就是让一只猴子把写有数字的纸片随机排序,如果猴子排出来的是有序的数组,那么就结束该过程,否则将继续重复这一步骤,直到排出有序数组为止。
该算法的最优时间复杂度是O(n),平均时间复杂度是O(n*n!),最糟糕的情况下可能会无限执行下去。
目前没有在网上找到猴子排序法的java实现,因此就自己写了一下,博君一笑。

public class Bogosort {

	public static void main(String[] args) {
		int count = 0;
		int[] arr = {7,5,3,1,9,20,8,13,-3,-20};
		while(! isOrdered(arr)){
			shuffle(arr);
			count++;
		}
		System.out.println("排序次数"+count);
		for(int i : arr){
			System.out.print(i+" ");
		}
	}
	
	//判断是否有序方法
	public static boolean isOrdered(int[] arr) {
    for (int i = 1; i < arr.length; i++) {
        if (arr[i - 1] > arr[i]) {
            return false;
        }
    }
    return true;
	}
	
	//随机排序方法
	public static void shuffle(int[] arr) {
		int temp;
        for (int i = 0; i < arr.length; i++) {
            int j = (int)(Math.random() * arr.length);
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }

}

以下为尝试运行的结果,嗯,你没看错,4280多万次- =

排序次数42809038
-20 -8 -3 1 3 5 7 8 9 13 20