Drop-Merge Sort

Adaptive based on drops.

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

How it works

Adaptive based on drops.

Implementation

function dropMergeSort(arr) {
  const dropped = [];
  let i = 1;
  while (i < arr.length) {
    if (arr[i] < arr[i - 1]) {
      dropped.push(arr.splice(i, 1)[0]);
    } else i++;
  }
  dropped.sort((a, b) => a - b);
  // Merge arr and dropped back together
}