Python 数组元素旋转程序


声明数组后,将数组中的元素旋转到特定索引,即将第一个元素到所需索引的元素放在数组的最后一个元素旁边。让我们通过输入输出场景来讨论这个问题。

输入输出场景

考虑一个数组 arr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]。

  • 我们可以清楚地看到,初始数组包含 10 个元素,最后一个元素的索引为 9。

  • 假设数组旋转两个元素。

  • 在这种情况下,前两个元素将放在最后一个元素“10”之后。

  • 首先,元素“1”将放在 10 之后,然后放置元素“1”后,下一个元素“2”将放在 1 的旁边。

因此,生成的数组将为 arr = [ 3, 4, 5, 6, 7, 8, 9, 10, 1, 2 ]。

示例

在这个示例中,我们将讨论一次性旋转数组中某些元素的过程。构建程序必须遵循的步骤如下:

  • 声明一个处理数组元素旋转的函数或方法。

  • (注意,方法的参数必须包含数组、数组的最大大小以及用户所需的旋转次数)

  • 在方法中,考虑使用变量名“temp”创建一个新数组,以存储旋转后的数组元素。

  • 借助变量“i”和循环,迭代数组中的元素(直到等于旋转次数的索引),并将元素一个接一个地添加到“temp”数组中。

  • 考虑另一个循环,并从下一个索引迭代元素并相应地存储它们。

  • 现在,将数组“arr”合并到数组“temp”中,并将值存储到数组“arr”中。

def rotate_elements(arr, max, no_of_elements):
   temp = []
   i = 0
   while (i < no_of_elements):
      temp.append(arr[i])
      i += 1

   i = 0
   while (no_of_elements < max):
      arr[i] = arr[no_of_elements]
      i = i + 1
      no_of_elements = no_of_elements + 1

   arr[:] = arr[: i] + temp
   return arr
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("The array before rotation is: ", end =' ')
print(arr)
print("The array after rotation is: ", end=' ')
max_size = len(arr)

print(rotate_elements(arr, max_size, 2))

输出

上述程序的输出如下:

The array before rotation is:  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
The array after rotation is:  [3, 4, 5, 6, 7, 8, 9, 10, 1, 2]

示例

在这个示例中,我们将讨论逐个旋转数组中某些元素的过程。构建程序必须遵循的步骤如下:

  • 声明两个函数。第一个函数将用于迭代所有元素直到总旋转次数,同时调用第二个方法,以便在迭代元素后,立即允许旋转元素。

  • (注意,方法的参数必须包含数组、数组的最大大小以及用户所需的旋转次数)

  • 在第二个方法中,考虑使用变量名“temp”创建一个空数组,以存储旋转后的数组元素。

  • 借助变量“i”和循环,迭代从索引 0 到最后一个元素的最后一个索引的所有元素,并逐个旋转数组的元素。

  • 打印旋转后数组“arr”中存在的元素。

def rotate_elements(arr, no_of_elements, max):
   for i in range(no_of_elements):
      rotate_one_by_one(arr, max)
def rotate_one_by_one(arr, max):
   temp = arr[0]
   for i in range(max-1):
      arr[i] = arr[i+1]
   arr[max-1] = temp

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("The array before rotation: ")
print(arr)

rotate_elements(arr, 2, 10)
print("The array after rotation: ")
print(arr)

输出

上述程序的输出如下:

The array before rotation: 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
The array after rotation:
[3, 4, 5, 6, 7, 8, 9, 10, 1, 2]

结论

我们可以清楚地观察到,上面讨论的两个程序生成的输出完全相同。程序之间的唯一区别是程序体中遵循的过程和使用的方法。在第一个程序中,在一个方法内,使用外部数组将元素整体旋转。在第二个程序中,使用两个不同的方法来通过调用方法逐个旋转元素。这样,就可以旋转数组的元素。

更新于:2023年5月8日

885 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告