Python程序:旋转数组元素

Python程序:旋转数组元素

在声明一个数组之后,将数组的元素旋转到某个索引位置之前,使前面的元素到达数组的最后,序列的最后一个元素后面。让我们用一个输入输出的场景来讨论这个问题。

输入输出场景

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

  • 我们可以清楚地说,初始数组由10个元素组成,最后一个元素的索引是9。

  • 假设该数组被旋转2个元素。

  • 在这种情况下,前两个元素放在最后一个元素“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("旋转前的数组为:", end =' ')
print(arr)
print("旋转后的数组为:", end=' ')
max_size = len(arr)

print(rotate_elements(arr, max_size, 2))

输出

上述程序的输出如下所示:

旋转前的数组为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
旋转后的数组为:[3, 4, 5, 6, 7, 8, 9, 10, 1, 2]

范例

在此示例中,我们将讨论如何通过一定数量的旋转逐个旋转数组的某些元素

(一次一个),构建程序所必须遵循的步骤如下:

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

(注意:该方法的参数必须包含数组、数组的最大大小和用户需要的旋转次数)

  • 在该方法中,通过循环迭代数组的每个元素。

  • 将每个元素逐个复制到一个名为temp的新数组变量中。

  • 将temp数组的前两个元素旋转到末尾,存储下标变量为“no_of_elements”和“no_of_elements+1”。

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

def rotate_individual_items(arr, max, no_of_elements):
    for i in range(0, no_of_elements):
        temp = arr[0]
        for j in range(0, max-1):
            arr[j] = arr[j+1]
        arr[max-1] = temp
    return arr
arr = [1,2,3,4,5,6,7,8,9,10]
print("旋转前的数组为:", end =' ')
print(arr)
print("旋转后的数组为:", end=' ')
max_size = len(arr)

print(rotate_individual_items(arr, max_size, 2))

输出

上述程序的输出如下所示:

旋转前的数组为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
旋转后的数组为:[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("旋转前的数组:")
print(arr)

rotate_elements(arr, 2, 10)
print("旋转后的数组:")
print(arr)

输出

以上程序的输出如下 –

旋转前的数组: 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
旋转后的数组:
[3, 4, 5, 6, 7, 8, 9, 10, 1, 2]

结论

我们可以清楚地观察到上述两个程序产生的输出完全相等。两个程序之间的唯一区别在于程序体内的处理过程和所使用的方法。在第一个程序中,使用外部数组一起旋转元素。在第二个程序中,使用两个不同的方法依次旋转元素,通过调用方法。以这种方式,可以旋转数组的元素。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程