Weak-Heap Sort

Minimizes branches.

Best O(n log n) Avg O(n log n) Worst O(n log n) Space O(n) Stable No In-place Yes Comparison-based

How it works

Minimizes branches.

Implementation

function weakHeapSort(arr) {
  const n = arr.length;
  const r = new Uint8Array(n);  // reverse bits
  // Build weak heap bottom-up
  for (let i = n - 1; i > 0; i--) {
    let j = i;
    while ((j & 1) === r[j >> 1]) j >>= 1;
    let ancestor = j >> 1;
    if (arr[ancestor] < arr[i]) {
      [arr[ancestor], arr[i]] = [arr[i], arr[ancestor]];
      r[i] ^= 1;
    }
  }
  // Extract max, sift down
  for (let i = n - 1; i > 0; i--) {
    [arr[0], arr[i]] = [arr[i], arr[0]];
    siftDown(arr, i, r, 0);
  }
}