Picks up each element from the unsorted boundary and shifts it leftward through the sorted region one position at a time until it lands in its correct position.
Degrades to O(n) on nearly-sorted input because very few shifts are needed per element, which is why it is used as the finishing step in advanced hybrids such as Timsort and Introsort once sub-arrays are small.