Sorting algorithms/Quicksort: Difference between revisions
Content added Content deleted
imported>Rcmlz |
imported>Rcmlz |
||
Line 8,228: | Line 8,228: | ||
=={{header|Raku}}== |
=={{header|Raku}}== |
||
<syntaxhighlight lang="raku" line> |
<syntaxhighlight lang="raku" line> |
||
#| Recursive, quicksort implementation |
#| Recursive, single-thread, single-pass, quicksort implementation |
||
multi quicksort(@unsorted where @unsorted.elems < 2) { @unsorted } |
multi quicksort(@unsorted where @unsorted.elems < 2) { @unsorted } |
||
multi quicksort(@unsorted) { |
multi quicksort(@unsorted) { |
||
my $pivot = @unsorted.pick; |
my $pivot = @unsorted.pick; |
||
my %class{Order} is default([]); |
my %class{Order} is default([]) = @unsorted.classify: * cmp $pivot; |
||
⚫ | |||
%class = @unsorted.classify: * cmp $pivot; |
|||
⚫ | |||
} |
} |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
Line 8,241: | Line 8,240: | ||
<syntaxhighlight lang="raku" line> |
<syntaxhighlight lang="raku" line> |
||
#| 7-Line, recursive, parallel, quicksort implementation |
#| 7-Line, recursive, parallel, single-pass, quicksort implementation |
||
multi seven-line-quicksort-parallel(@unsorted where @unsorted.elems < 2) { @unsorted } |
multi seven-line-quicksort-parallel(@unsorted where @unsorted.elems < 2) { @unsorted } |
||
multi seven-line-quicksort-parallel(@unsorted) { |
multi seven-line-quicksort-parallel(@unsorted) { |
||
Line 8,257: | Line 8,256: | ||
constant $BATCH-SIZE = 2**10; |
constant $BATCH-SIZE = 2**10; |
||
my atomicint $worker = $*KERNEL.cpu-cores; |
my atomicint $worker = $*KERNEL.cpu-cores; |
||
#| Recursive, parallel, tuned, single-pass, quicksort implementation |
|||
proto quicksort-parallel(| --> Positional) {*} |
proto quicksort-parallel(| --> Positional) {*} |
||
multi quicksort-parallel(@unsorted where @unsorted.elems < 2) { @unsorted } |
multi quicksort-parallel(@unsorted where @unsorted.elems < 2) { @unsorted } |