Performance: swap vs shift
One note about shifting versus exchanging is also important.
In general, a shift operation requires approximately a third of the processing work of an exchange since only one assignment is performed.
In benchmark studies, insertion sort will show very good performance.