Сонний сортування - це цілий алгоритм сортування, який я знайшов в Інтернеті. Він відкриває вихідний потік і паралельно для кожного вхідного числа затримується на число секунд і виводить це число. Через затримки найвища кількість буде виведена останньою. Я вважаю, що він має 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 чисел), тому умови гонки ніколи не трапляються. і припускаючи, що умови перегонів ніколи не бувають.