Scans the entire array to detect naturally occurring runs, both ascending (non-decreasing) and strictly descending sequences. Descending runs are reversed in-place to become ascending. Adjacent pairs of runs are then merged, and the process repeats until a single sorted run remains.
Adaptive, already-sorted or fully-reversed input is handled in O(n) because it forms a single run, requiring only one detection scan and no merges. Unlike standard Merge sort, it is iterative with no recursion.