奇葩算法——猴子排序

这篇具有很好参考价值的文章主要介绍了奇葩算法——猴子排序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

奇葩算法——猴子排序

🏆今日学习目标:

🍀猴子排序
创作者:林在闪闪发光
⏰预计时间:30分钟
🎉个人主页:林在闪闪发光的个人主页

 🍁林在闪闪发光的个人社区,欢迎你的加入: 林在闪闪发光的社区

目录

故事的开始 

 猴子排序

睡眠排序

面条排序 


奇葩算法——猴子排序

 文章来源地址https://www.toymoban.com/news/detail-467551.html

故事的开始 

无聊的一个下午 和朋友说有点无聊 他和我说

奇葩算法——猴子排序

奇葩算法——猴子排序 

确实之前好像没有接触过 挺感兴趣 就去研究了一下

 猴子排序

奇葩算法——猴子排序

 引用一下百度百科——无限猴子理论

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

简单地说就是随便乱排   展示一下代码(这里我是用java代码实现的)

 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(10);
        long start = System.currentTimeMillis(); //获取开始时间
        bogoSort(iArrays);
        long end = System.currentTimeMillis();
        //获取结束时间
        System.out.println("运行时间:" + (end - start) / 1000 + "s");
    }

效果 

奇葩算法——猴子排序

奇葩算法——猴子排序

 

 还有睡眠排序 面条排序 感兴趣的大家可以研究一下

睡眠排序

睡眠排序也称为硬件排序 充分利⽤硬件计时器的资源实现拟态算法 

这个事件起源于⼀个屌丝发表了⼀个时间复杂度为

O(n)的排序算法,睡眠排序的主要逻辑是构造n个线程,它们和这n个数⼀⼀对应。初始化

后,线程们开始睡眠,等到对应的那么多个时间单位后各⾃醒来,然后输出对应的数。这样最⼩的数对应的线程最早醒来,这个数最早被输出。等所有线程都醒来,排序就结束了。

面条排序 

 面条排序的基本思想是左手拿一组数,右手拿对应数组个数的挂面,按照数值将挂面折断,然后把这一把面条往桌子上竖直整理一下,这个时候数值大小已经显而易见了,之后从上往下用手按,最先碰到手的面就是最长的,也就是最大的数字

 

到了这里,关于奇葩算法——猴子排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 聊聊哪些奇葩的代码规范 —— 代码放一行

    因为有些要求感觉实是太过奇葩,收集下来娱乐下大家。 要求代码必须要放在一行上面,导致代码上面有不少行甚至超过了 1000 个字符。 规范解读 就是有时候代码过长,我们会折行增加可读性,最简单的一个例子就是 object builder 设置值。奇葩的要求是这个代码必须要放在一

    2024年02月08日
    浏览(45)
  • 一个奇葩的网络问题,把技术砖家“搞蒙了“

    客户反馈有一个server端S, 两个client端C1, C2, S的iptables规则对C1, C2都是放通的,但是C2无法连接上S,客户很着急,催我们尽快解决。 这里解释一下,iptables规则是防火墙规则,是linux系统实现防火墙一个应用层配置工具,底层依赖是Linux内核网络子系统的netfiler框架。这里简单介

    2024年02月05日
    浏览(36)
  • Net6中遇到的一个很奇葩的问题

    先来看一段代码,是控制台应用程序 执行,然后在输出窗口得到 没毛病吧。 再来看第二段代码,是winform应用程序 其中Form1为新建的窗体类。除了VS自己生成的代码以外,我一个字符都没改。 执行,然后在输出窗口得到 并且,Form1窗口也没有正常弹出。 显然在第二次调用T

    2024年02月08日
    浏览(36)
  • Java 华为真题-猴子爬山

      一天一只顽猴想去从山脚爬到山顶,途中经过一个有个N个台阶的阶梯,但是这猴子有一个习惯:每一次只能跳1步或跳3步,试问猴子通过这个阶梯有多少种不同的跳跃方式? 输入描述         输入只有一个整数N(0N=50)此阶梯有多少个台阶。 输出描述         输出

    2024年02月07日
    浏览(31)
  • 猴子摘香蕉问题

    一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移箱子,攀登箱子等)。设房间里还有一只可被猴子移动的箱子,且猴子登上箱子时才能摘到香蕉,问猴子在某一状态下(设 猴子 位置为 A , 香蕉 位置在 B , 箱子 位置为 C ),如何行动

    2024年02月06日
    浏览(39)
  • 【排序算法】排序算法介绍及插入排序 ( 直接插入排序 && 希尔排序 )

    ​ ​📝个人主页:@Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:数据结构 🎯 长路漫漫浩浩,万事皆有期待 排序 :所谓排序,就是将一串数据,按照某种规律,或者以某种特性或,将数据按照递增或者递减,将数据从 无序转变为有序

    2023年04月21日
    浏览(42)
  • 【算法】排序算法(插入排序、希尔排序、选择排序、冒泡排序、快速排序、归并排序、基数排序、堆排序)

    插入排序 :插入排序、希尔排序 选择排序 :选择排序、堆排序 交换排序 :冒泡排序、快速排序 归并排序 基数排序(又叫桶排序) (1)思路图解 从头开始比较相邻元素的值(就是从下标较小的元素开始),使值较大的元素逐渐从前移向后部,就像水里的气泡一样,越来越大,向上

    2024年03月25日
    浏览(54)
  • 安卓---实验7---小猴子摘桃

    2024年02月06日
    浏览(110)
  • 【数据结构与算法】排序算法(选择排序,冒泡排序,插入排序,希尔排序)

    基本概念这了就不浪费时间解释了,这四种都是很简单的排序方式,本专栏后续文章会出归并排序,计数排序,快速排序,堆排序,桶排序等排序算法,今天这篇文章中给出选择排序,冒泡排序,插入排序和希尔排序的实现; 如果发现文章中有错误,还请大家指出来,我会非

    2024年02月15日
    浏览(86)
  • t2017递推2猴子摘桃

    2、猴子摘桃(nhoi2005xx1) Description 果园里种了很多桃树,当桃树开始结果的时候,猴子便会成群结队地前来摘桃。  猴子们第一天会摘掉桃子的一半还多一个,第二天再摘第一天剩下的一半还多一个,以后每天均摘掉上一天剩下的一半还多一个,到第N天时,树上就只剩下两个

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包