UNPKG

@andrewrubin/min-heap

Version:

Min Heap data structure in JavaScript

3 lines (2 loc) 2.09 kB
var t=0;function e(e){return"__private_"+t+++"_"+e}function i(t,e){if(!Object.prototype.hasOwnProperty.call(t,e))throw new TypeError("attempted to use private field on non-instance");return t}var n=function(t){this.value=t},r=/*#__PURE__*/e("list"),h=/*#__PURE__*/e("compare"),s=/*#__PURE__*/e("parent"),o=/*#__PURE__*/e("leftChild"),a=/*#__PURE__*/e("rightChild"),u=/*#__PURE__*/e("heapifyUp"),f=/*#__PURE__*/e("heapifyDown"),c=/*#__PURE__*/function(){function t(t){Object.defineProperty(this,f,{value:b}),Object.defineProperty(this,u,{value:y}),Object.defineProperty(this,a,{value:v}),Object.defineProperty(this,o,{value:l}),Object.defineProperty(this,s,{value:p}),Object.defineProperty(this,r,{writable:!0,value:[]}),Object.defineProperty(this,h,{writable:!0,value:function(t,e){if(!t instanceof n||!e instanceof n)throw"Comparison argument must be an instance of HeapNode.";return e.value>t.value}}),t&&"function"==typeof t&&(i(this,h)[h]=t)}var e=t.prototype;return e.peek=function(){return i(this,r)[r][0].value},e.pull=function(){if(0!==i(this,r)[r].length){var t=i(this,r)[r][0],e=i(this,r)[r].pop();return 0!==i(this,r)[r].length&&(i(this,r)[r][0]=e,i(this,f)[f](0)),t.value}},e.insert=function(t){var e=i(this,r)[r].push(new n(t));return i(this,u)[u](e-1),t},e.getList=function(){return i(this,r)[r]},e.isEmpty=function(){return 0===i(this,r)[r].length},t}();function p(t){return Math.floor(.5*(t-1))}function l(t){var e=2*t+1;return i(this,r)[r][e]&&e}function v(t){var e=2*t+2;return i(this,r)[r][e]&&e}function y(t){if(!(i(this,r)[r].length<2))for(;i(this,s)[s](t)>=0;){var e=i(this,s)[s](t),n=i(this,r)[r][t],o=i(this,r)[r][e];if(i(this,h)[h](o,n))break;var a=[n,o];o=a[0],n=a[1],i(this,r)[r][e]=o,i(this,r)[r][t]=n,t=e}}function b(t){if(!(i(this,r)[r].length<2))for(;i(this,o)[o](t);){var e=i(this,o)[o](t),n=i(this,a)[a](t),s=n&&i(this,h)[h](i(this,r)[r][n],i(this,r)[r][e])?n:e,u=i(this,r)[r][t],f=i(this,r)[r][s];if(i(this,h)[h](u,f))break;var c=[f,u];u=c[0],f=c[1],i(this,r)[r][t]=u,i(this,r)[r][s]=f,t=s}}export{c as default}; //# sourceMappingURL=min-heap.module.js.map