buckets-js
Version:
Buckets is a complete, fully tested and documented data structure library written in pure JavaScript.
835 lines (508 loc) • 19.7 kB
HTML
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="generator" content="JsDoc Toolkit" />
<title>JsDoc Reference - buckets.PriorityQueue</title>
<style type="text/css">
/* default.css */
body
{
font: 13.5px sans-serif;
line-height: 20px;
max-width: 950px;
-webkit-font-smoothing: antialiased;
text-align: justify;
}
h1
{
padding: 0;
color: rgb(65, 131, 196);
margin: 0 auto;
padding-top: 18px;
}
#index
{
margin-top: 15px;
margin-left: 15px;
width: 160px;
position: absolute;
left: 8px;
padding: 8px;
background: #fafafa;
padding-top: 12px;
padding-left: 6px;
padding-right: 12px;
padding-bottom: 0px;
border: 1px solid rgba(0, 0, 0, 0.1);
}
#content
{
margin-left: 220px;
}
.classList li
{
padding: 0;
margin: 0 0 8px 0;
}
.summaryTable {
width: 100%;
}
h2 { font-size: 110%; }
caption, div.sectionTitle
{
box-sizing: border-box;
color: rgb(51, 51, 51);
background-color: #fafafa;
line-height: 25px;
font-family: Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol';
font-size: 14px;
font-style: normal;
font-variant: normal;
font-weight: bold;
text-align: left;
padding: 2px 6px 2px 6px;
border: 1px rgb(216, 216, 216) solid;
}
div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }
.summaryTable td
{
vertical-align: top;
padding: 4px;
border-bottom: 1px rgb(216, 216, 216) solid;
border-right: 1px rgb(216, 216, 216) solid;
border-left: 1px rgb(216, 216, 216) solid;
}
/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
border-left: 1px;
width: 140px;
text-align: right;
}
td.attributes, .fixedFont
{
color: rgb(2, 74, 8);
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
}
.summaryTable td.nameDescription
{
text-align: left;
}
.summaryTable { margin-bottom: 8px; }
.detailList .heading
{
font-weight: bold;
padding-bottom: 6px;
margin-left: 0;
}
.classList {
list-style-type: none;
padding: 0;
margin: 0 0 0 8px;
font-family: sans-serif;
font-size: 1em;
overflow: auto;
}
a { color:#4285f4;
text-decoration: none;
}
hr {
border: 0;
border-top: 1px solid rgb(216, 216, 216);
border-bottom: 1px solid rgba(255, 255, 255, 0.3);
}
td.nameDescription.fixedFont {
color: rgb(0, 0, 0);
}
span.light {
color: rgb(148, 149, 155);
font-weight: bold;
}
pre {
background: #fafafa;
padding-top: 16px;
padding-bottom: 16px;
padding-left: 16px;
padding-right: 16px;
/* border: 1px solid rgba(0, 0, 0, 0.1); */
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
font-style: normal;
font-variant: normal;
font-weight: normal;
border: 1px solid rgba(0, 0, 0, 0.1);
color: rgb(124, 19, 0);
}
</style>
</head>
<body>
<!-- ============================== header ================================= -->
<!-- begin static/header.html -->
<div id="header">
</div>
<!-- end static/header.html -->
<!-- ============================== classes index ============================ -->
<div id="index">
<!-- begin publish.classesIndex -->
<ul class="classList">
<li><a href="../symbols/buckets.arrays.html">buckets.arrays</a></li>
<li><a href="../symbols/buckets.Bag.html">buckets.Bag</a></li>
<li><a href="../symbols/buckets.BSTree.html">buckets.BSTree</a></li>
<li><a href="../symbols/buckets.Dictionary.html">buckets.Dictionary</a></li>
<li><a href="../symbols/buckets.Heap.html">buckets.Heap</a></li>
<li><a href="../symbols/buckets.LinkedList.html">buckets.LinkedList</a></li>
<li><a href="../symbols/buckets.MultiDictionary.html">buckets.MultiDictionary</a></li>
<li><a href="../symbols/buckets.PriorityQueue.html">buckets.PriorityQueue</a></li>
<li><a href="../symbols/buckets.Queue.html">buckets.Queue</a></li>
<li><a href="../symbols/buckets.Set.html">buckets.Set</a></li>
<li><a href="../symbols/buckets.Stack.html">buckets.Stack</a></li>
</ul>
<!-- end publish.classesIndex -->
</div>
<div id="content">
<!-- ============================== class title ============================ -->
<h1 class="classTitle">
Object buckets.PriorityQueue
</h1>
<!-- ============================== class summary ========================== -->
<p class="description">
<p>In a priority queue each element is associated with a "priority",
elements are dequeued in highest-priority-first order (the elements with the
highest priority are dequeued first). This implementation uses a binary
heap as the underlying storage.</p>
<p>If the inserted elements are custom objects, a compare function must be provided,
otherwise the <=, === and >= operators are used to compare object priority.</p>
<p>Example:</p>
<pre>
function compare(a, b) {
if (a is less than b by some ordering criterion) {
return -1;
} if (a is greater than b by the ordering criterion) {
return 1;
}
// a must be equal to b
return 0;
}
</pre>
</p>
<!-- ============================== constructor summary ==================== -->
<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class buckets.PriorityQueue.">
<caption>Object Summary</caption>
<thead>
<tr>
<th scope="col">Constructor Name and Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="nameDescription" >
<div class="fixedFont">
<b><a href="../symbols/buckets.PriorityQueue.html#constructor">buckets.PriorityQueue</a></b>(compareFunction)
</div>
<div class="description">Creates an empty priority queue.</div>
</td>
</tr>
</tbody>
</table>
<!-- ============================== properties summary ===================== -->
<!-- ============================== methods summary ======================== -->
<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class buckets.PriorityQueue.">
<caption>Method Summary</caption>
<thead>
<tr>
<th scope="col">Method Name and Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.PriorityQueue.<b><a href="../symbols/buckets.PriorityQueue.html#.add">add</a></b>(element)
</div>
<div class="description">Inserts the specified element into the priority queue.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.PriorityQueue.<b><a href="../symbols/buckets.PriorityQueue.html#.clear">clear</a></b>()
</div>
<div class="description">Removes all elements from the priority queue.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.PriorityQueue.<b><a href="../symbols/buckets.PriorityQueue.html#.contains">contains</a></b>(element)
</div>
<div class="description">Returns true if the priority queue contains the specified element.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.PriorityQueue.<b><a href="../symbols/buckets.PriorityQueue.html#.dequeue">dequeue</a></b>()
</div>
<div class="description">Retrieves and removes the highest priority element of the queue.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.PriorityQueue.<b><a href="../symbols/buckets.PriorityQueue.html#.enqueue">enqueue</a></b>(element)
</div>
<div class="description">Inserts the specified element into the priority queue.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.PriorityQueue.<b><a href="../symbols/buckets.PriorityQueue.html#.equals">equals</a></b>(other)
</div>
<div class="description">Returns true if the queue is equal to another queue.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.PriorityQueue.<b><a href="../symbols/buckets.PriorityQueue.html#.forEach">forEach</a></b>(callback)
</div>
<div class="description">Executes the provided function once per element present in the queue in
no particular order.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.PriorityQueue.<b><a href="../symbols/buckets.PriorityQueue.html#.isEmpty">isEmpty</a></b>()
</div>
<div class="description">Checks if the priority queue is empty.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.PriorityQueue.<b><a href="../symbols/buckets.PriorityQueue.html#.peek">peek</a></b>()
</div>
<div class="description">Retrieves, but does not remove, the highest priority element of the queue.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.PriorityQueue.<b><a href="../symbols/buckets.PriorityQueue.html#.size">size</a></b>()
</div>
<div class="description">Returns the number of elements in the priority queue.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.PriorityQueue.<b><a href="../symbols/buckets.PriorityQueue.html#.toArray">toArray</a></b>()
</div>
<div class="description">Returns an array containing all the elements in the queue in no
particular order.</div>
</td>
</tr>
</tbody>
</table>
<!-- ============================== events summary ======================== -->
<!-- ============================== constructor details ==================== -->
<div class="details"><a name="constructor"> </a>
<div class="sectionTitle">
Object Detail
</div>
<div class="fixedFont">
<b>buckets.PriorityQueue</b>(compareFunction)
</div>
<div class="description">
Creates an empty priority queue.
</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{function(Object|Object):number=}</span> <b>compareFunction</b>
</dt>
<dd>Optional
function used to compare two element priorities. Must return a negative integer,
zero, or a positive integer as the first argument is less than, equal to,
or greater than the second.</dd>
</dl>
</div>
<!-- ============================== field details ========================== -->
<!-- ============================== method details ========================= -->
<div class="sectionTitle">
Method Detail
</div>
<a name=".add"> </a>
<div class="fixedFont"><static>
<span class="light">{boolean}</span>
<span class="light">buckets.PriorityQueue.</span><b>add</b>(element)
</div>
<div class="description">
Inserts the specified element into the priority queue. It's equivalent to enqueue.
</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{Object}</span> <b>element</b>
</dt>
<dd>The element to insert.</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{boolean}</span> True if the element was inserted, or false if it's undefined.</dd>
</dl>
<hr />
<a name=".clear"> </a>
<div class="fixedFont"><static>
<span class="light">buckets.PriorityQueue.</span><b>clear</b>()
</div>
<div class="description">
Removes all elements from the priority queue.
</div>
<hr />
<a name=".contains"> </a>
<div class="fixedFont"><static>
<span class="light">{boolean}</span>
<span class="light">buckets.PriorityQueue.</span><b>contains</b>(element)
</div>
<div class="description">
Returns true if the priority queue contains the specified element.
</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{Object}</span> <b>element</b>
</dt>
<dd>Element to search for.</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{boolean}</span> True if the priority queue contains the specified element,
false otherwise.</dd>
</dl>
<hr />
<a name=".dequeue"> </a>
<div class="fixedFont"><static>
<span class="light">{*}</span>
<span class="light">buckets.PriorityQueue.</span><b>dequeue</b>()
</div>
<div class="description">
Retrieves and removes the highest priority element of the queue.
</div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{*}</span> The highest priority element of the queue,
or undefined if the queue is empty.</dd>
</dl>
<hr />
<a name=".enqueue"> </a>
<div class="fixedFont"><static>
<span class="light">{boolean}</span>
<span class="light">buckets.PriorityQueue.</span><b>enqueue</b>(element)
</div>
<div class="description">
Inserts the specified element into the priority queue.
</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{Object}</span> <b>element</b>
</dt>
<dd>The element to insert.</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{boolean}</span> True if the element was inserted, or false if it's undefined.</dd>
</dl>
<hr />
<a name=".equals"> </a>
<div class="fixedFont"><static>
<span class="light">{boolean}</span>
<span class="light">buckets.PriorityQueue.</span><b>equals</b>(other)
</div>
<div class="description">
Returns true if the queue is equal to another queue.
Two priority queues are equal if they have the same elements.
</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{<a href="../symbols/buckets.PriorityQueue.html">buckets.PriorityQueue</a>}</span> <b>other</b>
</dt>
<dd>The other queue.</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{boolean}</span> True if the queue is equal to the given queue.</dd>
</dl>
<hr />
<a name=".forEach"> </a>
<div class="fixedFont"><static>
<span class="light">buckets.PriorityQueue.</span><b>forEach</b>(callback)
</div>
<div class="description">
Executes the provided function once per element present in the queue in
no particular order.
</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{function(Object):*}</span> <b>callback</b>
</dt>
<dd>Function to execute, it's
invoked one element as argument. To break the iteration you can
optionally return false inside the callback.</dd>
</dl>
<hr />
<a name=".isEmpty"> </a>
<div class="fixedFont"><static>
<span class="light">{boolean}</span>
<span class="light">buckets.PriorityQueue.</span><b>isEmpty</b>()
</div>
<div class="description">
Checks if the priority queue is empty.
</div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{boolean}</span> True if and only if the priority queue contains no items, false
otherwise.</dd>
</dl>
<hr />
<a name=".peek"> </a>
<div class="fixedFont"><static>
<span class="light">{*}</span>
<span class="light">buckets.PriorityQueue.</span><b>peek</b>()
</div>
<div class="description">
Retrieves, but does not remove, the highest priority element of the queue.
</div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{*}</span> The highest priority element of the queue, or undefined if the queue is empty.</dd>
</dl>
<hr />
<a name=".size"> </a>
<div class="fixedFont"><static>
<span class="light">{number}</span>
<span class="light">buckets.PriorityQueue.</span><b>size</b>()
</div>
<div class="description">
Returns the number of elements in the priority queue.
</div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{number}</span> The number of elements in the priority queue.</dd>
</dl>
<hr />
<a name=".toArray"> </a>
<div class="fixedFont"><static>
<span class="light">{Array.<*>}</span>
<span class="light">buckets.PriorityQueue.</span><b>toArray</b>()
</div>
<div class="description">
Returns an array containing all the elements in the queue in no
particular order.
</div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{Array.<*>}</span> An array containing all the elements in the queue
in no particular order.</dd>
</dl>
<!-- ============================== event details ========================= -->
<hr />
</div>
</body>
</html>