Sleep Sort è un algoritmo di ordinamento di numeri interi che ho trovato su Internet. Apre un flusso di output e, per ogni numero di input in parallelo, ritarda per il numero di secondi ed emette quel numero. A causa dei ritardi, l'ultimo numero verrà emesso per ultimo. Stimo che ha O (n + m), dove n è il numero di elementi e m è il numero più alto.
Ecco il codice originale in Bash
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
Ecco lo pseudocodice
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
Il tuo compito è implementare l'ordinamento in sospensione come funzione nel linguaggio di programmazione che preferisci. Puoi trascurare qualsiasi fattore di concorrenza come le condizioni di gara e non bloccare mai alcuna risorsa condivisa. Vince il codice più corto. La definizione della funzione conta per la lunghezza del codice.
L'elenco di input è limitato a numeri interi non negativi e la lunghezza dell'elenco di input dovrebbe essere ragionevolmente lunga (testare almeno 10 numeri) in modo che le condizioni di gara non si verifichino mai. e supponendo che le condizioni di gara non accadano mai.