JSFiddle - React, Tailwind, and code Playground
by sramnan
JavaScript
var arrayLength;
function buildHeap(input) {
arrayLength = input.length;
for (var i = Math.floor(arrayLength / 2); i >= 0; i -= 1) {
heapify(input, i);
}
}
function heapify(input, i) {
var left = 2 * i + 1;
var right = 2 * i + 2;
var largest = i;
if (left < arrayLength && input[left] > input[largest]) {
largest = left;
}
if (right < arrayLength && input[right] > input[largest]) {
largest = right;
}
if (largest != i) {
swap(input, i, largest);
heapify(input, largest);
}
}
function swap(input, index_A, index_B) {
var temp = input[index_A];
input[index_A] = input[index_B];
input[index_B] = temp;
}
function heapSort(input) {
buildHeap(input);
for (var i = input.length - 1; i > 0; i--) {
swap(input, 0, i);
arrayLength--;
heapify(input, 0);
}
}
var example = [40, 10, 50, 24, 1, 2, 4, -10, 15, 7, 8, 5];
heapSort(example);
console.log(example);