|n.||1.||A crowd; a throng; a multitude or great number of persons.|
|2.||A great number or large quantity of things not placed in a pile; |
|3.||A pile or mass; a collection of things laid in a body, or thrown together so as to form an elevation; |
|v. t.||1.||To collect in great quantity; to amass; to lay up; to accumulate; - usually with up; |
|2.||To throw or lay in a heap; to make a heap of; to pile; |
|3.||To form or round into a heap, as in measuring; to fill (a measure) more than even full.|
|Noun||1.||heap - a collection of objects laid on top of each other|
|2.||heap - (often followed by `of') a large number or amount or extent; "a batch of letters"; "a deal of trouble"; "a lot of money"; "he made a mint on the stock market"; "it must have cost plenty"|
|3.||heap - a car that is old and unreliable; "the fenders had fallen off that old bus"|
|Verb||1.||heap - bestow in large quantities; "He heaped him with work"; "She heaped scorn upon him"|
|2.||heap - arrange in stacks; "heap firewood around the fireplace"; "stack your books up on the shelves"|
|3.||heap - fill to overflow; "heap the platter with potatoes"|
|1.||(programming)||heap - An area of memory used for dynamic memory allocation where blocks of memory are allocated and freed in
an arbitrary order and the pattern of allocation and size of
blocks is not known until run time. Typically, a program
has one heap which it may use for several different purposes.|
Heap is required by languages in which functions can return arbitrary data structures or functions with free variables (see closure). In C functions malloc and free provide access to the heap.
Contrast stack. See also dangling pointer.
|2.||(programming)||heap - A data structure with its elements partially
ordered (sorted) such that finding either the minimum or the
maximum (but not both) of the elements is computationally
inexpensive (independent of the number of elements), while
both adding a new item and finding each subsequent
smallest/largest element can be done in O(log n) time, where n
is the number of elements.|
Formally, a heap is a binary tree with a key in each node, such that all the leaves of the tree are on two adjacent levels; all leaves on the lowest level occur to the left and all levels, except possibly the lowest, are filled; and the key in the root is at least as large as the keys in its children (if any), and the left and right subtrees (if they exist) are again heaps.
Note that the last condition assumes that the goal is finding the minimum quickly.
Heaps are often implemented as one-dimensional arrays. Still assuming that the goal is finding the minimum quickly the invariant is
heap[i] <= heap[2*i] and heap[i] <= heap[2*i+1] for all i,
where heap[i] denotes the i-th element, heap being the first. Heaps can be used to implement priority queues or in sort algorithms.