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}}==