Sleep Sort - алгоритм целочисленной сортировки, который я нашел в Интернете. Он открывает выходной поток, и для каждого входного числа параллельно задерживается число секунд и выводится это число. Из-за задержек наибольшее число будет выведено последним. Я оцениваю это имеет 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 чисел), чтобы условия гонки никогда не возникали. и предполагая, что условия гонки никогда не случаются.