function heapSort (list) {
for (let i = 1; i < list.length; i++) {
let idx = i, pIdx = Math.floor(idx / 2)
while (idx > 0 && list[pIdx] < list[idx]) {
[list[pIdx], list[idx]] = [list[idx], list[pIdx]]
idx = pIdx
pIdx = Math.floor(idx / 2)
}
}
for (let i = list.length - 1; i > 0; i--) {
[list[0], list[i]] = [list[i], list[0]]
let pIdx = i, lIdx = pIdx * 2 + 1, rIdx = pIdx * 2 + 2
while (lIdx < i && Math.max(list[lIdx], list[rIdx]) < list[pIdx]) {
let swapIdx = list[lIdx] > list[rIdx] ? lIdx : rIdx
[list[swapIdx], list[pIdx]] = [list[pIdx], list[swapIdx]]
pIdx = swapIdx
lIdx = pIdx * 2 + 1, rIdx = pIdx * 2 + 2
}
}
return list
}
console