Sleep Sort to algorytm sortowania liczb całkowitych, który znalazłem w Internecie. Otwiera strumień wyjściowy i dla każdej liczby wejściowej równolegle opóźnia liczbę sekund i wysyła tę liczbę. Ze względu na opóźnienia najwyższa liczba zostanie wyprowadzona na końcu. Szacuję, że ma O (n + m), gdzie n to liczba elementów, a m to najwyższa liczba.
Oto oryginalny kod w Bash
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
Oto pseudokod
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
Twoim zadaniem jest wdrożenie funkcji Sleep Sort jako funkcji w wybranym języku programowania. Możesz pominąć wszelkie czynniki współbieżności, takie jak warunki wyścigu i nigdy nie blokować żadnych wspólnych zasobów. Najkrótszy kod wygrywa. Definicja funkcji liczy się do długości kodu.
Lista wejściowa jest ograniczona tylko do nieujemnych liczb całkowitych, a długość listy wejściowej powinna być odpowiednio długa (przetestuj co najmniej 10 liczb), aby warunki wyścigu nigdy się nie zdarzyły. i zakładając, że warunki wyścigowe nigdy się nie zdarzają.