一.引言

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

二.睡眠排序

1.实现思路

给定正整数数组 nums,针对数组中每一个 num 启动一个 thread,thread 内执行 Thread.sleep() 方法随后返回 num,这样 nums 的大小和 sleep 时间绑定在一起,从而实现 nums 数组的从小到大排序。

2.常规线程排序实现

  // 常规线程操作def commonThreadSort(nums: Array[Int], k: Int = 1): Unit = {nums.foreach(num => {new Thread() {override def run(): Unit = {try {Thread.sleep(num * k)println(num)} catch {case e: Exception =>e.printStackTrace()}}}.start()})}val short_nums = Array[Int](3, 7, 2, 10, 62, 34, 5)val k = 1// 直接起线程commonThreadSort(short_nums, k)

遍历 nums 针对每个给定的 num 起一个 thread,然后 sleep 并 print 输出,看到结果似乎并不完全达到从小到大排序的要求:

2 5 3 7 10 34 62

所以我引入了调节因子 k,

Scala - 睡眠排序应用与分析相关推荐

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

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

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

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

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

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

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

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

  5. 冒泡和快速排序的时间复杂度_八大排序算法性能分析及总结

    一.排序算法说明 排序的定义:对一个无序的序列进行排序的过程. 输入:n个数:a1,a2,a3,-,an. 输出:n个数的排列:a1,a2,a3,-,an,使得a1<=a2<=a3< ...

  6. java实现apriori算法_各种排序算法的分析及java实现(一)

    阅读本文约需要7分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下用Navicat for Mysql导入.sql文件的 ...

  7. 【Java】睡眠排序

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

  8. dv算法java实现_各种排序算法的分析及java实现(二)

    更多精彩,请点击上方蓝字关注我们! 上次跟大家分享了下各种排序算法的分析及java实现(一)的相关知识,今天跟大家分享各种排序算法的分析及java实现(二)的知识.昨天我们讲到了选择排序,今天我们继续 ...

  9. java插入排序实现,经典(Java版)排序算法的分析及实现之一直接插入排序

    预备知识 排序算法从功能上是对一个数据元素集合或序列重新排列成一个按数据元素某个相知有序的序列.从内存空间使用简单上看分为内部排序和外部排序. 内部排序是数据记录在内存中进行排序,适合不太大的元素序列 ...

最新文章

  1. python判断数据类型
  2. keepalived+LVS的实现
  3. STM32 资料整理贴(更新到10年1月)[转]
  4. python详解enumerate()方法;
  5. 解决Red hat 5.4的中文问题
  6. 用eclipse修改web工程的访问路径
  7. PAT_B_1055_Java(25分)
  8. 向量除法能用计算机吗,为什么向量没有除法
  9. 云开发听说过没? Compilr 屌爆的在线开发工具 -_-#
  10. SpringBoot2.0 基础案例(13):基于Cache注解模式,管理Redis缓存
  11. 450g带盖吐司配方_【配方分享】预祝冬安 明石克彦老师的提子吐司
  12. Python编程一定要注意的那些“坑”(七)
  13. Matlab之矩阵行列式、秩、迹的求解
  14. 黎曼ζ 函数中的Γ是否与欧拉B函数中的Γ一样
  15. 计算机组成原理知识体系
  16. C3D实现ucf101人体行为识别代码知识总结
  17. Android驱动开发过程中常用的adb指令
  18. Day22 汽车租赁系统
  19. android fps测试 apk,性能测试 查看Android APP 帧数FPS的方法
  20. ffmpeg+mencoder环境搭建和视频处理总结(4m/1/99)

热门文章

  1. MySQL 5.7.20 Group Relication(组复制)搭建手册
  2. 《我学区块链》—— 五、Remix简单使用
  3. Xcode发布测试版本,直接通过Safari在线安装ipa
  4. 15款奔驰C200的车载系统语言,汽车遇到互联网(16):体验奔驰COMAND系统
  5. 基于python+django框架+Mysql数据库的跳蚤市场二手物品交易系统设计与实现
  6. BZOJ2535: [Noi2010]Plane 航空管制2
  7. 齿轮函数怎么用c语言打出来,C语言 齿轮基本参数的计算程序
  8. 佛山科学技术学院计算机组成原理实验报告,计算机组成原理实验报告(四个实验图).doc...
  9. 如何批量完成新入职员工身份证实名认证?
  10. 一文帮你搞定90%的JS手写题