Sorting algorithms/Heapsort: Difference between revisions

Content added Content deleted
(→‎{{header|Perl 6}}: Added Perl 6 solution)
Line 1,242: Line 1,242:
>>> heapsort(ary)
>>> heapsort(ary)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]</pre>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]</pre>

=={{header|REXX}}==
<lang rexx>
/*REXX program sorts an array using the heapsort method. */

call gen@ /*generate array elements. */
call show@ 'before sort' /*show before array elements*/
call heapSort highItem /*invoke the heap sort. */
call show@ ' after sort' /*show after array elements*/
exit


/*─────────────────────────────────────HEAPSORT subroutine─────────*/
heapSort: procedure expose @.; parse arg n

do j=n%2 by -1 to 1
call shuffle j,n
end

do n=n by -1 to 2
_=@.1; @.1=@.n; @.n=_; call shuffle 1,n
end

return


/*─────────────────────────────────────SHUFFLE subroutine──────────*/
shuffle: procedure expose @.; parse arg i,n; _=@.i

do while i+i<=n
j=i+i; k=j+1
if k<=n & @.k>@.j then j=k
if _>=@.j then leave
@.i=@.j; i=j
end

@.i=_
return


/*─────────────────────────────────────GEN@ subroutine─────────────*/
gen@: @.='' /*assign default value. */

@.1 ='---letters of the modern Greek Alphabet---'
@.2 ='=========================================='
@.3 ='alpha'
@.4 ='beta'
@.5 ='gamma'
@.6 ='delta'
@.7 ='epsilon'
@.8 ='zeta'
@.9 ='eta'
@.10='theta'
@.11='iota'
@.12='kappa'
@.13='lambda'
@.14='mu'
@.15='nu'
@.16='xi'
@.17='omicron'
@.18='pi'
@.19='rho'
@.20='sigma'
@.21='tau'
@.22='upsilon'
@.23='phi'
@.24='chi'
@.25='psi'
@.26='omega'

do highItem=1 while @.highItem\=='' /*find how many entries. */
end

highItem=highItem-1 /*adjust highItem slightly. */
return


/*─────────────────────────────────────SHOW@ subroutine────────────*/
show@: widthH=length(highItem) /*maximum widht 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: ---letters of the modern Greek Alphabet---
element 2 before sort: ==========================================
element 3 before sort: alpha
element 4 before sort: beta
element 5 before sort: gamma
element 6 before sort: delta
element 7 before sort: epsilon
element 8 before sort: zeta
element 9 before sort: eta
element 10 before sort: theta
element 11 before sort: iota
element 12 before sort: kappa
element 13 before sort: lambda
element 14 before sort: mu
element 15 before sort: nu
element 16 before sort: xi
element 17 before sort: omicron
element 18 before sort: pi
element 19 before sort: rho
element 20 before sort: sigma
element 21 before sort: tau
element 22 before sort: upsilon
element 23 before sort: phi
element 24 before sort: chi
element 25 before sort: psi
element 26 before sort: omega
────────────────────────────────────────────────────────────────────────────────
element 1 after sort: eta
element 2 after sort: ==========================================
element 3 after sort: chi
element 4 after sort: beta
element 5 after sort: delta
element 6 after sort: ---letters of the modern Greek Alphabet---
element 7 after sort: theta
element 8 after sort: iota
element 9 after sort: omicron
element 10 after sort: lambda
element 11 after sort: omega
element 12 after sort: kappa
element 13 after sort: nu
element 14 after sort: mu
element 15 after sort: epsilon
element 16 after sort: alpha
element 17 after sort: phi
element 18 after sort: pi
element 19 after sort: psi
element 20 after sort: rho
element 21 after sort: sigma
element 22 after sort: tau
element 23 after sort: gamma
element 24 after sort: upsilon
element 25 after sort: xi
element 26 after sort: zeta
────────────────────────────────────────────────────────────────────────────────
</pre>


=={{header|Ruby}}==
=={{header|Ruby}}==