Top Qs
Timeline
Chat
Perspective

Block swap algorithms

From Wikipedia, the free encyclopedia

Remove ads

In computer algorithms, block swap algorithms swap two regions of elements of an array. It is simple to swap two non-overlapping regions of an array of equal size. However, it is not as simple to swap two contiguous regions of an array of unequal sizes (algorithms that perform such swapping are called rotation algorithms). A few well-known algorithms can accomplish this: Bentley's juggling (also known as the dolphin algorithm[1]), Gries-Mills rotation[1], triple reversal algorithm, conjoined triple reversal algorithm (also known as the trinity rotation) and Successive rotation.[1][2]

Remove ads

Triple reversal algorithm

The triple reversal algorithm is the simplest to explain, using rotations. A rotation is an in-place reversal of array elements. This method swaps two elements of an array from outside in within a range. The rotation works for an even or odd number of array elements. The reversal algorithm uses three in-place rotations to accomplish an in-place block swap:

  • Rotate region A
  • Rotate region B
  • Rotate region AB

Where A and B are adjacent regions of an array that together form the region AB.

Gries-Mills and reversal algorithms perform better than Bentley's juggling, because of their cache-friendly memory access pattern behavior.

The triple reversal algorithm parallelizes well, because rotations can be split into sub-regions, which can be rotated independently of others.

Remove ads

References

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads