Python 中数组旋转的不同方法

2025 年 4 月 18 日 | 阅读 5 分钟

在本教程中,我们将学习如何使用 Python 程序旋转数组。我们将编写一个函数(arry[], E, K)来旋转大小为 K = 8 的数组 arry[],旋转 E = 4 个元素。

Different Methods of Array Rotation in Python

旋转数组 4 个元素后,我们将得到以下数组

Different Methods of Array Rotation in Python

数组旋转的方法

在本节中,我们将讨论用户可以根据自己的需求使用的数组旋转的不同方法。

方法 1:使用临时数组

在此方法中,我们将使用以下方法

步骤 1:我们将“E”个元素存储在临时数组中

Temp[] = [1, 3, 5, 7]

步骤 2:我们将移动剩余的 arry[]

arry[] = [9, 11, 13, 15]

步骤 3:我们将存储“E”个元素

arry[] = [9, 11, 13, 15, 1, 3, 5, 7]

示例

输出

Array after Rotation by 4 elements is: [9, 11, 13, 15, 1, 3, 5, 7]

在上述方法中

方法 2:逐个旋转元素

在此方法中,我们将使用以下方法

rotate_array1(arry[], E, K)

  • 我们将设置“for”条件,如果 J 等于 0 且小于 E,则 rotate_array1 函数将所有元素旋转一次

为了逐个旋转元素,我们需要将 arry[0] 存储在一个临时变量“temp_1”中。然后,我们将 arry[1] 移动到 arry[0],将 arry[2] 移动到 arry[1],依此类推。最后,我们将 temp_1 放在 arry[n-1] 的位置。

示例

输出

The array after rotation: 
1 3 5 7 9 11 13 15

在上述方法中

方法 3:使用杂耍算法

在此方法中,我们将把数组分成不同的集合,而不是逐个移动元素。

当集合的数量等于“K”和“E”的最大公约数时,代码将把元素移到这些集合中。

如果最大公约数等于 1,则元素将只移到一个集合中。在这里,我们将从 temp_1 = arry[0] 开始,然后将 arry[J + E] 移动到 arry[J],最后将 temp_1 存储在正确的位置。

让我们看一个例子,其中 K = 16 且 E = 4。最大公约数 (G_C_D) = 4

步骤 -

  • 首先,元素将被移动到第一个集合 - 如下图所示
    Different Methods of Array Rotation in Python

完成此集合后,arry[] 将等于 [15, 12, 13, 14, 19, 16, 17, 18, 23, 20, 21, 22, 11, 23, 24, 25, 26]

  • 然后是第二个集合:arry 将是 [15, 16, 13, 14, 19, 20, 17, 18, 23, 24, 21, 22, 11, 12, 24, 25, 26]
  • 在第三个集合中:arry 将是 [15, 16, 17, 14, 19, 20, 21, 18, 23, 24, 25, 11, 12, 13, 26]
  • 最后,在第四个集合中:arry 将是 [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 11, 12, 13, 14]

示例

输出

The array after rotation:
[15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 11, 12, 13, 14]

在上述方法中

方法 4:使用列表切片

在此方法中,我们将使用列表切片来旋转数组的元素。

示例

输出

The List is: [11, 12, 13, 14, 15, 16, 17, 18]
The rotated list is: 
[15, 16, 17, 18, 11, 12, 13, 14]

如果我们想将数组旋转的次数超过其长度,我们可以使用模运算。

假设我们要旋转的数组大小为“K”,旋转“E”次,且“E”大于“K”。在这种情况下,我们必须计算 (E%K),然后我们可以根据模计算的结果进行旋转。

结论

在本文中,我们讨论了如何使用 Python 使用不同的方法来旋转给定的数组。