Sorting algorithms/Comb sort: Difference between revisions
Content added Content deleted
No edit summary |
|||
Line 811: | Line 811: | ||
[0, 4, 5, 8, 14, 18, 20, 31, 33, 44, 62, 70, 73, 75, 76, 78, 81, 82, 84, 88] |
[0, 4, 5, 8, 14, 18, 20, 31, 33, 44, 62, 70, 73, 75, 76, 78, 81, 82, 84, 88] |
||
>>> </lang> |
>>> </lang> |
||
=={{header|REXX}}== |
|||
<lang rexx> |
|||
/*REXX program sorts an array using the comb-sort method. */ |
|||
call gen@ /*generate array elements. */ |
|||
call show@ 'before sort' /*show before array elements*/ |
|||
call combSort highItem /*invoke the comb sort. */ |
|||
call show@ ' after sort' /*show after array elements*/ |
|||
exit |
|||
/*─────────────────────────────────────COMBSORT subroutine─────────*/ |
|||
combSort: procedure expose @.; parse arg n |
|||
s=n-1 /*S = spread between COMBs. */ |
|||
do until s<=1 & done |
|||
s=trunc(s*.8) /* ÷ is slow, * is better. */ |
|||
done=1 |
|||
do j=1 until j+s>=n |
|||
jps=j+s |
|||
if @.j>@.jps then do; _=@.j; @.j=@.jps; @.jps=_; done=0; end |
|||
end |
|||
end |
|||
return |
|||
/*─────────────────────────────────────GEN@ subroutine─────────────*/ |
|||
gen@: @.='' /*assign default value. */ |
|||
@.1 ='--- polygon sides' |
|||
@.2 ='============== =====' |
|||
@.3 ='triangle 3' |
|||
@.4 ='quadrilateral 4' |
|||
@.5 ='pentagon 5' |
|||
@.6 ='hexagon 6' |
|||
@.7 ='heptagon 7' |
|||
@.8 ='octagon 8' |
|||
@.9 ='nonagon 9' |
|||
@.10='decagon 10' |
|||
@.11='dodecagon 12' |
|||
do highItem=1 while @.highItem\=='' /*find how many entries. */ |
|||
end |
|||
highItem=highItem-1 /*adjust highItem slightly. */ |
|||
return |
|||
/*─────────────────────────────────────SHOW@ subroutine────────────*/ |
|||
show@: widthH=length(highItem) /*maximum width of any line.*/ |
|||
do j=1 for highItem |
|||
say 'element' right(j,widthH) arg(1)":" @.j |
|||
end |
|||
say copies('─',80) /*show a seperator line. */ |
|||
return |
|||
</lang> |
|||
Output: |
|||
<pre style="height:30ex;overflow:scroll"> |
|||
element 1 before sort: --- polygon sides |
|||
element 2 before sort: ============== ===== |
|||
element 3 before sort: triangle 3 |
|||
element 4 before sort: quadrilateral 4 |
|||
element 5 before sort: pentagon 5 |
|||
element 6 before sort: hexagon 6 |
|||
element 7 before sort: heptagon 7 |
|||
element 8 before sort: octagon 8 |
|||
element 9 before sort: nonagon 9 |
|||
element 10 before sort: decagon 10 |
|||
element 11 before sort: dodecagon 12 |
|||
──────────────────────────────────────────────────────────────────────────────── |
|||
element 1 after sort: --- polygon sides |
|||
element 2 after sort: ============== ===== |
|||
element 3 after sort: decagon 10 |
|||
element 4 after sort: dodecagon 12 |
|||
element 5 after sort: heptagon 7 |
|||
element 6 after sort: hexagon 6 |
|||
element 7 after sort: nonagon 9 |
|||
element 8 after sort: octagon 8 |
|||
element 9 after sort: pentagon 5 |
|||
element 10 after sort: quadrilateral 4 |
|||
element 11 after sort: triangle 3 |
|||
──────────────────────────────────────────────────────────────────────────────── |
|||
</pre> |
|||
=={{header|Ruby}}== |
=={{header|Ruby}}== |