Sorting algorithms/Sleep sort: Difference between revisions
m
→{{header|Elena}}
(Added assembly implementation) |
|||
(5 intermediate revisions by 4 users not shown) | |||
Line 35:
=={{header|Assembly}}==
{{works with|flat assembler for
<syntaxhighlight lang="asm">
format ELF64 executable 3
entry start
; parameters: argc, argv[] on stack
start:
mov r12, [rsp] ; get argc
Line 103 ⟶ 104:
syscall
; parameter: rdi = string pointer
; return: rax = integer conversion
atoi_simple:
push rdi
Line 134 ⟶ 137:
ret ; return integer value
; parameter: rdi = string pointer
; return: rax = length
strlen_simple:
xor rax, rax
Line 553 ⟶ 558:
=={{header|Elena}}==
ELENA
<syntaxhighlight lang="elena">import extensions;
import system'routines;
Line 565 ⟶ 570:
sleepSort()
{
self.forEach::(n)
{
threadControl.start(
Line 579 ⟶ 584:
}
}
public program()
{
}</syntaxhighlight>
Line 1,196 ⟶ 1,201:
<pre>
$ java -jar sleepsort.jar 5 7 -1 2 4 1 8 0 3 9 6
Unsorted: 5 7 2 4 1 8 0 3 9 6
Sorted : 0 1 2 3 4 5 6 7 8 9
</pre>
=== Using coroutines ===
<syntaxhighlight lang="kotlin">
import kotlinx.coroutines.*
fun sleepSort(list: List<Int>, delta: Long) {
runBlocking {
list.onEach {
launch {
delay(it * delta)
print("$it ")
}
}
}
}
fun main() {
val list = listOf(5, 7, 2, 4, 1, 8, 0, 3, 9, 6)
println("Unsorted: ${list.joinToString(" ")}")
print("Sorted : ")
sleepSort(list, 10)
}
</syntaxhighlight>
Output:
<pre>
Unsorted: 5 7 2 4 1 8 0 3 9 6
Sorted : 0 1 2 3 4 5 6 7 8 9
Line 1,670 ⟶ 1,705:
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<!--</syntaxhighlight>-->
=={{header|PHP}}==
A PHP implementation of sleep sort using process forking.
<syntaxhighlight lang="php">
<?php
$buffer = 1;
$pids = [];
for ($i = 1; $i < $argc; $i++) {
$pid = pcntl_fork();
if ($pid < 0) {
die("failed to start child process");
}
if ($pid === 0) {
sleep($argv[$i] + $buffer);
echo $argv[$i] . "\n";
exit();
}
$pids[] = $pid;
}
foreach ($pids as $pid) {
pcntl_waitpid($pid, $status);
}
</syntaxhighlight>
<pre>
php ./sleepsort.php 35 21 11 1 2 27 32 7 42 20 50 42 25 41 43 14 46 20 30 8
1
2
7
8
11
14
20
20
21
25
27
30
32
35
41
42
42
43
46
50
</pre>
=={{header|PicoLisp}}==
Line 2,325 ⟶ 2,412:
=={{header|Wren}}==
More of a simulation than a 'true' sleep sort.
<syntaxhighlight lang="
import "io" for Stdout
import "os" for Process
Line 2,359 ⟶ 2,446:
Sample run:
<pre>
$ wren
Before: 1 8 3 7 4 6
After : 1 3 4 6 7 8
|