Anonymous user
Sorting algorithms/Heapsort: Difference between revisions
→{{header|REXX}}: rewrote version 1, elided version 2, renumbered version 3 to version 2.
m (→{{header|AppleScript}}: Minor comment correction.) |
(→{{header|REXX}}: rewrote version 1, elided version 2, renumbered version 3 to version 2.) |
||
Line 3,795:
=={{header|REXX}}==
===version 1, elements of an array===
This REXX version uses a heapsort to sort elements of an array
<br>or a mixture of both.
Indexing of the array
<lang rexx>/*REXX pgm sorts an array (names of epichoric Greek letters) using a heapsort algorithm.*/
call show
call heapSort
do #=1 until @.#==''; end; #=# - 1 /*find # entries.*/▼
▲call show " after sort:"
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
if x='' then x= _;
/*──────────────────────────────────────────────────────────────────────────────────────*/
do n=n by -1 to 2; _= @.1; @.1=
end /*n*/; return /* [↑] swap two elements;
/*──────────────────────────────────────────────────────────────────────────────────────*/▼
if $>=@.j then leave; @.i=@.j; i=j▼
shuffle: procedure expose @.; parse arg i,n; $= @.i
/*──────────────────────────────────────────────────────────────────────────────────────*/
show: do s=1 for #; say ' element' right(s, length(#)) arg(1) @.s; end; return</lang>
{{out|output|text= when using the default (epichoric Greek alphabet) for input:}}
(Shown at three-quarter size.)
<pre style="font-size:75%>
element 1 before sort: alpha
element 2 before sort: beta
Line 3,882 ⟶ 3,881:
element 27 after sort: zeta
</pre>
{{out|output|text= when using the following for input: <tt> 19 0 -.2 .1 1e5 19 17 -6 789 11 37 </tt>}}▼
(Shown at three-quarter size.)
<pre style="font-size:75%">
▲if g='' then g='alpha beta gamma delta digamma epsilon zeta eta theta iota kappa lambda',
▲#=words(g); do i=1 for #; @.i=word(g,i); end /*assign to @. */
▲/*──────────────────────────────────────────────────────────────────────────────────────*/
▲ if k<=n then if @.k>@.j then j=k
▲{{out|output|text= when using the following for input: <tt> 19 0 -.2 .1 1e5 19 17 -6 789 11 37 </tt>}}
element 1 before sort: 19
element 2 before sort: 0
Line 3,938 ⟶ 3,910:
</pre>
===version
<lang rexx>/* REXX ***************************************************************
* Translated from PL/I
|