Drobiazgi
Odwracamy, obracamy...
Dana jest -elementowa tablica którą chcemy odwrócić, czyli spowodować, że jej elementy będą zapisane w kolejności
Najłatwiej to zrobić w miejscu (czyli używając jedynie stałej liczby komórek pamięci dla zmiennych pomocniczych), korzystając z instrukcji zamieniającej miejscami wartości dwóch elementów:
Nietrudno się przekonać, że powyższy kod wywołuje instrukcję zamiany jedynie razy, co w przypadku odwrócenia tablicy jest wynikiem optymalnym.
A teraz trudniejsze zadanie: chcemy tę samą tablicę obrócić o komórek w lewo, czyli ustawić jej elementy w kolejności I tym razem spróbujmy to zrobić, używając jedynie instrukcji zamiany.
Można w tym celu trzykrotnie wywołać omówioną przed chwilą procedurę odwracania tablicy:
Ten kod wykona instrukcji zamiany, co w zależności od parzystości liczb i da nam lub instrukcji. Pytanie: czy da się mniej?
Poniższy kod obraca tablicę, dzieląc ją na cykli o długości i wykonując obrót każdego z nich niezależnie, do czego potrzebuje instrukcji zamiany:
Operacja oznacza tu Zatem w tym rozwiązaniu użyjemy w sumie instrukcji zamiany. A czy ten wynik da się poprawić?