[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