|
相关论文《睡眠排序算法的优化》已发表在柳叶刀杂志,敬请查阅
睡眠排序以其特有的便捷性越来越被重视了,Windows等一众大厂也有计划在今后的内核中使用易语言和该算法使其有更高的性能和稳定性。
但是,经典睡眠排序的缺点不容忽视,在时间复杂度上,随着数值的增大呈线性增加,在稳定性上,邻近的数值也会因为线程的异步执行导致出错,所以优化将从这着重解决这两点。
解决的办法就是不使用多线程,让数据同步睡眠:每次循环把所有数值都-1,数值减少到0时就拿出来放到有序数组里,直到所有数值都为0。
经测试,时间复杂度得到了巨大的优化效果,稳定性也达到99%
变量名 | 类 型 | 静态 | 数组 | 备 注 | 数组1 | 整数型 | | 0 | 成员数 | 整数型 | | | i | 整数型 | | | 索引 | 整数型 | | | 排序好的数组 | 整数型 | | 0 | 睡眠计时 | 整数型 | | |
数组1 = { 5, 8, 14, 7, 13, 16, 1, 4, 9, 6, 10, 12, 11, 20, 17, 18, 15, 19, 0, 1, 0, 2, 3 } 循环判断首 ()成员数 = 取数组成员数 (数组1 )计次循环首 (成员数, i )索引 = 成员数 - i + 1 判断 (数组1 [索引 ] ≤ 0 )加入成员 (排序好的数组, 数组1 [索引 ] + 睡眠计时 )删除成员 (数组1, 索引, 1 )数组1 [索引 ] = 数组1 [索引 ] - 1 计次循环尾 ()睡眠计时 = 睡眠计时 + 1 循环判断尾 (成员数 > 0 )数组1 = 排序好的数组 调试输出 (数组1 )
|
|