Sleep Sort ist ein ganzzahliger Sortieralgorithmus, den ich im Internet gefunden habe. Es öffnet einen Ausgabestream und verzögert für jede parallel eingegebene Nummer die Anzahl der Sekunden und gibt diese Nummer aus. Aufgrund der Verzögerungen wird die höchste Zahl zuletzt ausgegeben. Ich schätze, es hat O (n + m), wobei n die Anzahl der Elemente und m die höchste Zahl ist.
Hier ist der Originalcode in Bash
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
Hier ist der Pseudocode
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
Ihre Aufgabe ist es, Sleep Sort als Funktion in der Programmiersprache Ihrer Wahl zu implementieren. Sie können Nebenläufigkeitsfaktoren wie Rennbedingungen vernachlässigen und niemals freigegebene Ressourcen sperren. Der kürzeste Code gewinnt. Die Funktionsdefinition wird auf die Codelänge angerechnet.
Die Eingabeliste ist nur auf nicht negative Ganzzahlen beschränkt, und die Länge der Eingabeliste sollte angemessen lang sein (mindestens 10 Zahlen testen), damit keine Rennbedingungen eintreten. und unter der Annahme, dass die Rennbedingungen niemals eintreten.