Sleep Sort เป็นอัลกอริธึมการเรียงลำดับจำนวนเต็มที่ฉันพบบนอินเทอร์เน็ต จะเปิดกระแสออกและสำหรับแต่ละหมายเลขอินพุตในแบบคู่ขนานล่าช้าสำหรับจำนวนวินาทีและเอาท์พุทจำนวนนั้น เนื่องจากความล่าช้าจำนวนสูงสุดจะถูกส่งออกครั้งสุดท้าย ฉันประมาณว่ามันมี 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 หมายเลข) เพื่อให้สภาพการแข่งขันไม่เคยเกิดขึ้น และสมมติว่าสภาพการแข่งขันไม่เคยเกิดขึ้น