Skip to content

Instantly share code, notes, and snippets.

@prabaprakash
Created November 25, 2019 08:16
Show Gist options
  • Save prabaprakash/52afdd94c13a49a0acd193dc1cc0431a to your computer and use it in GitHub Desktop.
Save prabaprakash/52afdd94c13a49a0acd193dc1cc0431a to your computer and use it in GitHub Desktop.
Heap data structure
var myHeap = [];
function swap(i, j) { // swap;
var temp;
temp = myHeap[i];
myHeap[i] = myHeap[j];
myHeap[j] = temp;
}
function bubble(i) {
var pi = Math.floor(i / 2); // parent's index
if (myHeap[i] < myHeap[pi]) {
swap(i, pi);
bubble(pi);
}
}
function bubble_down(i) {
var ci = (myHeap[i * 2] < myHeap[i * 2 + 1]) ? i * 2 : i * 2 + 1; // child index
if (myHeap[ci] < myHeap[i]) {
swap(ci, i);
bubble_down(ci)
}
}
function addHeap(n) {
myHeap.push(n);
bubble(myHeap.length - 1);
}
function deleteFromHeap(n) {
for (var i = 0; i < myHeap.length; i++) {
if (myHeap[i] == n) {
myHeap[i] = myHeap[myHeap.length - 1];
myHeap.pop();
bubble_down(i);
return;
}
}
}
function getMin() {
var min = myHeap[0];
myHeap[0] = myHeap[myHeap.length - 1];
bubble_down(0);
return min;
}
function peakMin() {
return myHeap[0];
}
var arr = [3, 0, 2, 5, 9, 4, 1];
addHeap(3);
addHeap(0);
addHeap(2);
addHeap(5);
addHeap(9);
addHeap(4);
addHeap(1);
deleteFromHeap(0);
deleteFromHeap(1);
console.log(myHeap)
console.log(getMin());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment