Sorting algorithms/Sleep sort: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 359: | Line 359: | ||
main :: IO () |
main :: IO () |
||
main = getArgs >>= sleepSort . map read</lang> |
main = getArgs >>= sleepSort . map read</lang> |
||
=={{header|Icon}} and {{header|Unicon}}== |
|||
The following solution only works in Unicon. |
|||
<lang unicon>global t |
|||
procedure main(A) |
|||
t := set() |
|||
every insert(t,mkThread(!A)) |
|||
every spawn(!t) # start threads as closely grouped as possible |
|||
while (*t > 0) do write(<<@) |
|||
end |
|||
procedure mkThread(n) # 10ms delay scale factor |
|||
return create (delay(n*10),delete(t,¤t),n@>&main) |
|||
end</lang> |
|||
Sample run: |
|||
<pre> |
|||
->ss 3 1 4 1 5 9 2 6 |
|||
1 |
|||
1 |
|||
2 |
|||
3 |
|||
4 |
|||
5 |
|||
6 |
|||
9 |
|||
-> |
|||
</pre> |
|||
=={{header|Java}}== |
=={{header|Java}}== |