Sleep Sort adalah algoritma pengurutan bilangan bulat yang saya temukan di Internet. Ini membuka aliran output, dan untuk setiap nomor input secara paralel, tunda untuk nomor detik dan output nomor itu. Karena penundaan, angka tertinggi akan dikeluarkan terakhir. Saya memperkirakan ia memiliki O (n + m), di mana n adalah jumlah elemen dan m adalah angka tertinggi.
Ini kode asli di Bash
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
Ini kodesemu
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
Tugas Anda adalah mengimplementasikan Sleep Sort sebagai fungsi dalam bahasa pemrograman pilihan Anda. Anda dapat mengabaikan faktor konkurensi seperti kondisi balapan dan tidak pernah mengunci sumber daya bersama. Kode terpendek menang. Definisi fungsi diperhitungkan terhadap panjang kode.
Daftar input dibatasi hanya untuk bilangan bulat non-negatif, dan panjang daftar input diharapkan cukup panjang (uji setidaknya 10 angka) sehingga kondisi balapan tidak pernah terjadi. dan dengan asumsi kondisi balapan tidak pernah terjadi.