相信大家最近都被某位天才(bushi 写的睡眠排序刷屏了

我到想不明白这世界上怎么还有这种**

但是其实在特定环境下,睡眠排序的时间复杂度要小于冒泡sort不香是咋的

原理来说,就是给每个数字开一个进程,然后这个数字是几,就让他睡多久,数字小的先醒过来,最后结果就是一个排列好的数字串了

但是转念一想,那毕竟某场早期的睾端处理器只有4c8t AMD YES!,所以线程不是想开就开(如果有大佬搞个8路E7那就当我啥也没说)

所以我们可以只用一个线程就搞定这些事情吗

当然可以,此之谓

伪·睡眠排序算法!

废话不多说,我们直接开始讲解

#include<iostream>
using namespace std;
int main(){return 0;
}

首先io头文件 std命名空间 int型main函数和最后返回0就不用说了

    int i;cin>>i;int f=0;int a[i],b[i];for(int x=0;x<i;x++){int c=0;cin>>c;if(c==0)f++; a[x]=c;b[x]=c;}

定义一个变量i作为数组的成员个数 f为计数器,负责记下已处理成员个数 数组a为需排序数组,成员大小不变化,b作为备份,其中的数字为对应成员的睡眠时长

c为输入(一个顶俩),如果c为0,f就记下一个,后面会将为什么要记0的个数

 for(int x=0;x<i;x++){cout<<0<<" ";}

现在数组里面有f个0,先将他们输出,为什么要输出还是后面讲

    int x=0;for(;;x++){if(f==i)break;if(b[x]!=0){b[x]--;if(b[x]==0){f++;cout<<a[x]<<" "; }}if(x==i-1)x=-1;}

定义x作为数组b下标

循环停止的标志是所有成员全部醒来,也就是用来记醒来成员数的f=成员总数i

同时每当x循环到最后一个成员但是f还未到达i时,就让x=-1,在下一次循环中x+1就变为0,也就是从第一个数字从新开始

之所以先把0排除,是因为当一个数字睡醒的时候,在循环中,这个数字-1会变为0;而0本身就为0,所以无法判断,就需要将其排除

那么完整版代码如下

#include<iostream>
using namespace std;
int main(){int i;cin>>i;int f=0;int a[i],b[i];for(int x=0;x<i;x++){int c=0;cin>>c;if(c==0)f++; a[x]=c;b[x]=c;}for(int x=0;x<i;x++){cout<<0<<" ";}int x=0;for(;;x++){if(f==i)break;if(b[x]!=0){b[x]--;if(b[x]==0){f++;cout<<a[x]<<" "; }}if(x==i-1)x=-1;}return 0;
}

如有错误欢迎指正 本人邮箱 xtr0928@126.com

伪睡眠排序(c++实现)相关推荐

  1. 排序算法--睡眠排序

    我们学数据结构的时候会学到多种排序算法,基本上都是基于比较的排序,下面的这个排序算法并不是基于比较,确切的说它是基于cpu调度算法实现的,这个算法的作者称之为--睡眠排序. 它的基本思想是,对一组数据 ...

  2. Java排序 - 不实用的几个排序算法 -- 睡眠排序、猴子排序、面条排序、珠排序...

    介绍几个不实用的排序算法,一来可以在学习时增加一些乐趣,放松一下自己,二来可以学习一下.思考一下这些算法失败在哪里,又是否存在一些好的地方? 睡眠排序 这是一个思想比较简单,脑洞巨大的算法 -- 我们 ...

  3. C语言最简单的sleep sort睡眠排序实现(附完整源码)

    C语言最简单的sleep sort睡眠排序实现 C语言最简单的sleep sort睡眠排序实现完整源码(定义,实现,main函数测试) C语言最简单的sleep sort睡眠排序实现完整源码(定义,实 ...

  4. # 睡眠3秒_【for fun】睡眠排序算法

    点击上方蓝字关注我,我们一起学编程有任何疑问或者想看的内容,欢迎私信 前天我们一起看了猴子排序,今天我们再来看一个奇葩的排序方法:睡眠排序. 所谓睡眠排序,就是为待排序数组的每一个元素 x 启动一个线 ...

  5. 【Java】睡眠排序

    写这个东西的缘由 这是一个羞耻度爆表的排序,那天跟朋友开玩笑,能不能用线程休眠操纵排序,朋友楞了一下,说还真有...我傻了,突然想想好像真有,就是这个睡眠排序. 最后长叹一口气,设计者脑洞真大... ...

  6. 睡眠排序法-objective C版的代码

    将开发过程比较重要的代码做个珍藏,下面代码内容是关于睡眠排序法-objective C版的代码,应该能对各位朋友有帮助. @interface NSArray (SleepSort) - (void) ...

  7. 奇葩算法系列——睡眠排序 (面条排序)

    睡眠排序源于网上流传的一个段子,版本也很多,有的是面试写的,有的是刚入职写的,总之当时在网上是火过一段时间的. 基本原理也很简单,利用CPU的调度原理,通过创建与待排数列元素个数相等的线程,在执行的时 ...

  8. Scala - 睡眠排序应用与分析

    一.引言 刷短视频看到有博主提到了睡眠排序这种排序方式,听了之后感觉很有意思,原文使用 java 进行编码,这里使用 scala 重新写一遍,顺带复习一下线程使用和线程安全相关的知识. 二.睡眠排序 ...

  9. 【代码】睡眠排序python实现

    在逛知乎时,碰巧发现这样一个问题除了经典和常用的排序算法外,还有哪些奇葩而有趣的排序算法?,里面出现了一个名叫睡眠排序的算法,真的是脑洞大开,特此来实现一下. 一点历史,原帖是2014年Reddit上 ...

最新文章

  1. PNAS前沿:迈向作为多层学习的进化理论
  2. Transaction rolled back because it has been marked as rollback-only分析解决方法
  3. 多目录cmake工程 CmakeLists.txt编写
  4. python没有英语基础的好学吗-Python好学吗难不难?0基础能学会吗?
  5. Win7安vc2008编译报LINK : fatal error LNK1000: Internal error during IncrBuildImage
  6. Android插件化开发之解决OpenAtlas组件在宿主的注冊问题
  7. 小米登录协议分析_小米回应小米11充电头兼容问题
  8. java的前生今世_HBaseGC的前生今世-身世篇
  9. c语言中用文件处理数据,C语言文件处理 -C语言从文件中读写格式化数据
  10. Linux的实际操作:Linux磁盘分区 、挂载
  11. 解决linux中xorg占用gpu问题
  12. SSM配置后可以访问静态html文件但无法访问其他后台接口的解决方案
  13. python3使用pickle读取文件提示TypeError或者UnicodeDecodeError的解决办法
  14. css怎么设置图片显示圆角,关于在css里设置图片圆角的问题
  15. 宗地图绘制要求和规范_地籍图、宗地图、房产图的制图规范
  16. BT.601和BT.656
  17. 【摄影笔记三】光圈和快门
  18. python测试开发课程_小蜗分享:Python测试开发全套学习路线
  19. 《西游降魔录》模块学习笔记
  20. java get请求405_get方法没问题,post方法报405错误

热门文章

  1. ScriptManager控件的使用
  2. 5G智慧校园建设顶层设计方案智慧校园大脑建设方案
  3. /proc/vmstat输出含义
  4. 短信系统WEB网页短信平台设计-移讯云短信系统
  5. 汽车学堂PID控制的车道保持系统
  6. Kafka中是怎么体现消息顺序性的?
  7. 英文写作—Grammarly安装及下载
  8. 2023年回顾与计划
  9. 软件版本信息定义规则
  10. 标梵讲解域名注册的流程和注意事项!