Я думаю, это вопрос определения. Он делает своп в конце каждого цикла, даже если он меняет один элемент на себя. В его случае свопы будут:
- Оригинал: 5 4 3 2 1
- Поменять позиции 1 и 5: 1 4 3 2 5
- Поменять позиции 2 и 4: 1 2 3 4 5
- Поменять позиции 3 и 3: 1 2 3 4 5
- Поменять позиции 4 и 4: 1 2 3 4 5
(для последнего элемента перестановка не выполняется, поскольку он всегда будет в правильном месте)
Простой оператор if можно использовать для устранения двух последних перестановок.