【每日一练---睡眠排序】

睡眠排序是一种趣味性的排序算法,基于多线程让每个元素按特定时间顺序输出。它适合非负整数排序,但面临负数、相近数值、大量数据及线程同步问题。实战中,睡眠排序展示出多线程设计和控制的挑战,其缺陷包括无法处理负数、数据相近时的误差、非同时启动的线程以及大数值可能导致的线程长时间睡眠。解决策略包括映射函数、放大数据差值、并行化执行等。
摘要由CSDN通过智能技术生成

睡眠排序简介 

睡眠排序算法是一种比较另类有趣的排序算法,其核心思想与CPU调度机制相关,是通过多线程让每一个数据元素睡眠一定规律的时间,睡眠时间要和自身数据大小存在一定的规律,睡眠时间短的先进行输出,睡眠长的后输出,从而实现数据有序输出。

睡眠排序由于其独有的排序方式,排序数字最好是非负整数,且最大值不要太大,否则算法会运行很久……非负小数其实也可以,但是排序后的相邻小数的差值不要太小,否则可能会出错,因为多线程的运行有其不确定性和延迟的可能……

睡眠排序涉及到多线程的设计、启动、运行,以及控制的方法,是多线程编程的一次小小实战!

睡眠排序实战

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/*
 *@author Azheng
 *@description
 *@date 2022/4/9
 */
public class MoreThreadSleepSort {
    //定义一个数组
    static int[] nums={78,42,56,5,46,33,28,89,1,18};
    //新建集合arraylist集合存放排序后的数据
    static List<Integer> list 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值