Method code for $heap.push()

[Turn on line numbering]
arg heap, element, priority_ind;
var i, j;

i = listlen(heap) + 1;
if (i == 1)
    return [element];
anticipate_assignment();
heap += [0];
while (i > 1 && element[priority_ind] < heap[(j = i / 2)][priority_ind])
    heap = replace(heap, i, heap[(i = j)]);
heap = heap.replace(i, element);
return heap;

// Miroslav Silovic
// Created 24-Nov-1996 as a part of ColdCore, see: @help Credit

Tlon