交換を一回しかしない配列の回転の応用だからJon BentleyのProgramming Pearlsだな。