夸克之书

  • 首页
  • 科普
  • 笔记
  • .NET/C#
  • 物联网
  • 算法
  • Linux
  • 树莓派
夸克之内,别有洞天
  1. 首页
  2. 默认
  3. 正文

严肃一点的排序算法(1) - 睡眠排序

2019-01-04 6590点热度 0人点赞 0条评论

朋友偶然给我发了一个截图,,,WTF??!

%title插图%num

起初看了一脸懵逼,这算哪门子排序算法?百度走一朝才找到是睡眠排序。

原理很简单,就是通过CPU调度来实现的。数组里面每个元素都创建一个线程,然后让线程休眠排序元素值的时间,最后输出结果。

知道原理了之后很容易就能想到这个排序算法的缺陷:效率不高,不能为负数(应该说是完全没有效率可言)。如果有超过10w个元素,而且其中有很大的数据,那排完序得何年何月。而且数组越大,产生的误差越大。

当然,这么有趣的算法,怎么也得实践一下。为了避免产生误差,我对序列中每个元素线程的休眠时间放大了10倍,并且加上了10ms的输出时间。

static void Main(string[] args)
{
    int[] nums = new[] { 1, 4, 7, 20, 14, 30, 124, 45 };
    for (int i = 0; i < nums.Length; i++)
    {
        NumSleep(nums[i]);
    }

    Console.ReadKey(false);
}

static async void NumSleep(int temp)
{
    await Task.Run(() =>
    {
        Thread.Sleep((temp * 10) + 10);
    });
    Console.WriteLine(temp);
}
%title插图%num
输出结果
本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2020-12-13

afirefish

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论
放松一下
https://www.quarkbook.com/wp-content/uploads/2021/05/凤凰传奇-海底(Live).flac
分类
  • .NET/C#
  • Linux
  • 树莓派
  • 物联网
  • 科普
  • 笔记
  • 算法
  • 默认
最新 热点 随机
最新 热点 随机
Visual Studio 2026(VS2026) 密钥/激活码 在代码中判断龙芯新旧世界平台 Windows获取固定后缀的IPv6地址 目前为止,你可能找不到第二台支持志强的1L小主机(P350 Tiny+W-1350+ECC+双NVME+PCIE扩展)!!! iKuai(爱快)实现成都移动IPTV IPoE拨号 Linux EXT4分区误删除后数据恢复
Visual Studio调试时不中断自定义异常 IdentityServer4使用Nginx反向代理后无法访问/.well-known/openid-configuration 记一次成功的Update(Oracle误Delete或Update数据还原) .NET Core EF提示“Unable to cast object of type 'System.Boolean' to type 'System.Int16'.” 几种常见的开源协议详解 ESXi 6.7U3离线驱动封装
最近评论
[茁]研小艾 发布于 21 小时前(07月31日) b战那个是你么? 我向你发了私信,你博客怎么一点ViewFaceCore相关的东西都没有。 Vie...
afirefish 发布于 3 周前(07月11日) 是的,不用保持MAC地址一致
Devil丶飘雪 发布于 2 个月前(06月15日) 跟着楼主的教程,已经实现在电脑上播放电视直播,但是有个问题,我是在光猫上设置了两个IPTV口,其中一...
xD 发布于 1 年前(07月17日) 牛逼
Eagle 发布于 2 年前(10月21日) 参考博主教程成功搞定了成都移动IPTV组播转单播,电脑、手机都可以播放了。但目前有个问题,原IPTV...
书签
  • 打赏
  • 毒鸡汤
  • 米店
  • 金鱼直播间

COPYRIGHT © 2023 quarkbook.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备15036129号-9

登录
注册|忘记密码?