Sorting algorithms/Quicksort: Difference between revisions

imported>Rcmlz
imported>Rcmlz
Line 8,228:
=={{header|Raku}}==
<syntaxhighlight lang="raku" line>
#| Recursive, single-thread, single-pass, quicksort implementation
multi quicksort(@unsorted where @unsorted.elems < 2) { @unsorted }
multi quicksort(@unsorted) {
my $pivot = @unsorted.pick;
my %class{Order} is default([]) = @unsorted.classify: * cmp $pivot;
|quicksortsamewith(%class{Less}), |%class{Same}, |quicksortsamewith(%class{More})
%class = @unsorted.classify: * cmp $pivot;
|quicksort(%class{Less}), |%class{Same}, |quicksort(%class{More})
}
</syntaxhighlight>
Line 8,241 ⟶ 8,240:
 
<syntaxhighlight lang="raku" line>
#| 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) {
Line 8,257 ⟶ 8,256:
constant $BATCH-SIZE = 2**10;
my atomicint $worker = $*KERNEL.cpu-cores;
#| Recursive, parallel, tuned, single-pass, quicksort implementation
proto quicksort-parallel(| --> Positional) {*}
multi quicksort-parallel(@unsorted where @unsorted.elems < 2) { @unsorted }
Anonymous user