要素を一つずつ循環的にシフトする方法 - 配列を一つずつ回転させる


  1. 配列の最後の要素を一時的な変数に保存します。
  2. 配列の最後から2番目の要素から順に、それぞれの要素を直前の要素に上書きします。すなわち、arr[i] = arr[i-1] のようにします。
  3. 1番目の要素(先頭)に、保存しておいた最後の要素の値を代入します。すなわち、arr[0] = temp のようにします。

この手順を使って、配列内の要素を一つずつ右にシフトすることができます。以下に、Pythonでの実装例を示します。

def cyclically_rotate(arr):
    temp = arr[-1]  # 最後の要素を一時的な変数に保存
    for i in range(len(arr)-2, -1, -1):
        arr[i+1] = arr[i]  # 要素を一つずつ右にシフト
    arr[0] = temp  # 先頭に最後の要素を代入
    return arr
# 使用例
my_array = [1, 2, 3, 4, 5]
result = cyclically_rotate(my_array)
print(result)  # 出力: [5, 1, 2, 3, 4]

このコードでは、関数 cyclically_rotate が与えられた配列を一つずつ右にシフトし、シフト後の配列を返します。上記の使用例では、配列 [1, 2, 3, 4, 5] をシフトした結果 [5, 1, 2, 3, 4] が出力されます。

他にも、この問題を解くためのさまざまなアルゴリズムが存在します。例えば、要素を一時的な変数に保存せずに操作する方法や、反復回数を減らす最適化などがあります。必要に応じて、さまざまなアプローチを試してみてください。

このようにして、配列内の要素を一つずつ循環的にシフトする方法と、そのコード例について説明しました。ぜひ、実際に試してみてください。