UNPKG

hd-utils

Version:

A handy utils for modern JS developers

34 lines (33 loc) 896 B
/** * @description an implementation for heapSort algorithm, it will sort an array of numbers or strings. * @example heapSort([3,2,1]) // [1,2,3] */ export default function heapSort(arr) { buildMaxHeap(arr); for (let i = arr.length - 1; i > 0; i--) { [arr[0], arr[i]] = [arr[i], arr[0]]; heapify(arr, i, 0); } return arr; } function buildMaxHeap(arr) { const n = arr.length; for (let i = Math.floor(n / 2) - 1; i >= 0; i--) { heapify(arr, n, i); } } function heapify(arr, n, i) { let largest = i; const left = 2 * i + 1; const right = 2 * i + 2; if (left < n && arr[left] > arr[largest]) { largest = left; } if (right < n && arr[right] > arr[largest]) { largest = right; } if (largest !== i) { [arr[i], arr[largest]] = [arr[largest], arr[i]]; heapify(arr, n, largest); } }