睡眠排序是我在Internet上找到的整数排序算法。它将打开一个输出流,并为每个并行输入的数字延迟数秒,然后输出该数字。由于延迟,最后输出的数字最大。我估计它具有O(n + m),其中n是元素数,m是最高数。
这是Bash中的原始代码
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
这是伪代码
sleepsort(xs)
output = []
fork
for parallel x in xs:
sleep for x seconds
append x to output
wait until length(output) == length(xs)
return output
您的任务是使用您选择的编程语言将Sleep Sort实现为一个函数。您可以忽略任何竞争因素,例如竞争条件,并且永远不要锁定任何共享资源。最短的代码获胜。函数定义计入代码长度。
输入列表仅限于非负整数,并且输入列表的长度预计会相当长(测试至少10个数字),因此竞争条件永远不会发生。并假设种族条件永远不会发生。