Sorting algorithms/Heapsort: Difference between revisions

Added uBasic/4tH version
m (→‎{{header|REXX}}: removed distracting titles within the data, added a version that starts with a list, changed/added whitespace and comments.)
(Added uBasic/4tH version)
Line 3,342:
:Return
 
=={{header|uBasic/4tH}}==
<lang>PRINT "Heap sort:"
n = FUNC (_InitArray)
PROC _ShowArray (n)
PROC _Heapsort (n)
PROC _ShowArray (n)
PRINT
 
END
 
 
_Heapsort PARAM(1) ' Heapsort
LOCAL (1)
PROC _Heapify (a@)
 
b@ = a@ - 1
DO WHILE b@ > 0
PROC _Swap (b@, 0)
PROC _Siftdown (0, b@)
b@ = b@ - 1
LOOP
RETURN
 
 
_Heapify PARAM(1)
LOCAL(1)
 
b@ = (a@ - 2) / 2
DO WHILE b@ > -1
PROC _Siftdown (b@, a@)
b@ = b@ - 1
LOOP
RETURN
 
 
_Siftdown PARAM(2)
LOCAL(2)
c@ = a@
 
DO WHILE ((c@ * 2) + 1) < (b@)
d@ = c@ * 2 + 1
IF d@+1 < b@ IF @(d@) < @(d@+1) THEN d@ = d@ + 1
WHILE @(c@) < @(d@)
PROC _Swap (d@, c@)
c@ = d@
LOOP
 
RETURN
 
 
_Swap PARAM(2) ' Swap two array elements
PUSH @(a@)
@(a@) = @(b@)
@(b@) = POP()
RETURN
 
 
_InitArray ' Init example array
PUSH 4, 65, 2, -31, 0, 99, 2, 83, 782, 1
 
FOR i = 0 TO 9
@(i) = POP()
NEXT
 
RETURN (i)
 
 
_ShowArray PARAM (1) ' Show array subroutine
FOR i = 0 TO a@-1
PRINT @(i),
NEXT
 
PRINT
RETURN</lang>
=={{header|zkl}}==
<lang zkl>fcn heapSort(a){ // in place
374

edits