Sorting algorithms/Quicksort: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: added a comment to the REXX section header.) |
m (→{{header|REXX}}: added optimization.) |
||
Line 6,191: | Line 6,191: | ||
call show@ ' after sort' /*show the after array elements. */ |
call show@ ' after sort' /*show the after array elements. */ |
||
exit /*stick a fork in it, we're all done. */ |
exit /*stick a fork in it, we're all done. */ |
||
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
|||
inOrder: parse arg n; do j=1 for n-1; k= j+1; if @.j>@.k then return 0; end; return 1 |
|||
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
||
qSort: procedure expose @.; a.1=1; parse arg b.1; $= 1 /*access @.; get @. size; pivot.*/ |
qSort: procedure expose @.; a.1=1; parse arg b.1; $= 1 /*access @.; get @. size; pivot.*/ |
||
if inOrder(b.1) then return /*Array already in order? Return*/ |
|||
do while $\==0; L= a.$; t= b.$; $= $ - 1; if t<2 then iterate |
do while $\==0; L= a.$; t= b.$; $= $ - 1; if t<2 then iterate |
||
H= L + t - 1; ?= L + t % 2 |
H= L + t - 1; ?= L + t % 2 |