java睡眠三秒 java睡眠排序法
  Q3FOCns2N46h 2023年11月02日 31 0


面向失业编程——睡眠排序和猴子排序

前言:

前几天看抖音的时候看到了比较有趣的算法,睡眠排序,紧接着发现这些沙雕排序比较好玩,然后又自己写了个猴子排序,让大家再面试的时候再也不用害怕啦(狗头保命)

排序算法一:睡眠排序
  • 睡眠排序是什么?
  • 睡眠排序利用的就是CPU的调度,使用Thread的sleep函数,给每一个值都加上一个线程,让该线程睡这个值的时间,那不就是你越大睡的越久,值越小越早醒,所以能起到排序的作用
  • 为什么有睡眠排序?
  • (可能觉得线程不用完,不得劲)
  • 睡眠排序的缺点
  • 若睡眠时间之间相差很小时,容易出现误差,为了减小误差,一般需要放大睡眠倍数;
  • 因为睡眠时间和数据大小有直接关系,因此数据不能太大 ,若数据很大时,睡眠时间要很久,程序运行时间很长;
  • 睡眠时间不能为负数,如果排序数据中存在负数,需要按照一定的规律把对应的睡眠时间转换成正数,比如说在设置睡眠时间时,把每一项都加上一个正数(该正数的绝对值要比最小负数的绝对值要大)
算法代码
public class text_1 extends Thread {
    public static void main(String[] args) {
		ma();
    }

    public static void ma() {
        int[] num = new int[]{1, 3, 7, 5, 2, 4};
        for (int i : num) {
            new Thread(() -> {
                try {
                    Thread.sleep(i);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } //用lambda表达式提升一下B格
                System.out.println(i);
            }).start();
        }

    }
}
排序算法二:猴子排序
  • 猴子排序是什么
  • 让一群猴子在打印机前昼夜不停地敲打键盘,最终有可能能输入一部莎士比亚作品集——尽管概论微乎其微。同理,把一堆扑克牌扔到天上,等它们落下来的时候有概率会刚刚好从小到大排成一列。
  • 简单的来说,就是把要排列的数组随机打乱,总能有一种情况是排列好的情况
  • 缺点和优点
  • 优点:有一定的几率可以第一次就排序好
  • 缺点:随机性太大,耗时太长
算法代码
public class monkey {
    public static void main(String[] args) {
        int[] num=new int[]{1,3,4,2,5,1};
        monkeysort(num);
        System.out.println(Arrays.toString(num));

    }
    public static void monkeysort(int[] nums)
    {
        map:while (true) {
            List<Integer> integers = Ints.asList(nums);//转为list集合

            Collections.shuffle(integers);//打乱数组,但是需要传入list集合
            int[] ints = Ints.toArray(integers);//转为数组
            //判断当前数组是否有序
            for (int i = 0; i < ints.length - 1; i++) {
                if (ints[i] > ints[i + 1]) {
                    continue map;//不正确重新打乱
                }

            }
            //如果有序了,将排序好的数组拷贝
            System.arraycopy(ints,0,nums,0,ints.length);
            break ;
        }

    }

	}

其中,我们需要用到array数组转list的函数,所以我们需要在maven中引入谷歌提供的guava工具类

<dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>20.0</version>
    </dependency>

最终的输出结果为:

java睡眠三秒 java睡眠排序法_数据


简直完美啊!

注意:这篇文章的算法看看就好!千万不要真的拿来用!


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   55   0   0 Java
  Tnh5bgG19sRf   2024年05月20日   114   0   0 Java
  8s1LUHPryisj   2024年05月17日   49   0   0 Java
  aRSRdgycpgWt   2024年05月17日   47   0   0 Java
Q3FOCns2N46h
作者其他文章 更多