Exchange two equally long disjoint segments of an array, preserving the order within each segment. Applying one swap at each corresponding offset exchanges length- blocks in swaps and constant auxiliary storage. Disjointness ensures that an earlier swap does not overwrite an original value needed by a later pair.
New to topics? Read the docs here!