куча так куча...
function siftDown(arr, i) {
let chi = i * 2 + 1;
while (chi < arr.length) {
const minChildIdx = chi < arr.length - 1 && arr[chi + 1] < arr[chi] ? chi + 1 : chi;
const chv = arr[minChildIdx];
if (arr[i] <= chv) break;
arr[minChildIdx] = arr[i];
arr[i] = chv;
i = minChildIdx;
chi = i * 2 + 1;
}
}
function heapify(arr) {
for (let i = Math.floor(arr.length / 2); i >= 0; --i) {
siftDown(arr, i);
}
}
function findMinWithHeap(arr) {
const heap = arr.flat();
heapify(heap);
return heap[0];
}
console.log(findMinWithHeap([[2, 1, 2], [0, 4, 5] ]));
время работы O(N), где N - сколько всего элементов в массиве. Надо объяснять почему, или и так понятно?