Golang 以数组中的元素进行旋转

Golang 以数组中的元素进行旋转

在这个教程中,我们将学习如何编写一个用 Go 语言来旋转一个数组的程序。我们将编写两个程序来实现这个功能,一个用于将数组向左旋转,另一个用于将数组向右旋转。

步骤

步骤 1 - 导入 fmt 包,它允许我们在屏幕上打印任何内容。

步骤 2 - 创建一个名为 rotateLeft() 的函数,它返回旋转后的最终数组。

步骤 3 - 此函数使用 for 循环来遍历数组,并在每次迭代中调用 rotateLeftByOne() 函数。

步骤 4 - 此函数将数组作为参数,并使用 for 循环遍历数组变量。

步骤 5 - 在每次迭代中,我们将下一个值放置在前一个位置,并恢复第一个元素。

步骤 6 - 现在调用 main() 函数。

步骤 7 - 初始化一个整数数组并为其赋值。

步骤 8 - 在屏幕上打印数组,并调用 rotateLeft() 函数,将数组和元素需要移动的次数作为参数传递给函数。

步骤 9 - 使用 fmt.Println() 函数打印最终的数组。

将数组向左旋转

示例

下面的代码演示了如何使用自定义函数将数组向左旋转。

package main
import "fmt"

// making a function to rotate elements of array
func rotateLeft(arr []int, count int) {
   for i := 0; i < count; i++ {
      rotateLeftByOne(arr)
   }
}
func rotateLeftByOne(arr []int) {
       var i int = 0
   var temp int = arr[0]
   for ; i < len(arr)-1; i++ {
      arr[i] = arr[i+1]
   }
   arr[i] = temp
}
func main() {
   arr := []int{1, 2, 3, 4, 5, 6, 7, 8}
   fmt.Println("The entered array is:", arr)
   rotateLeft(arr, 3)
   fmt.Println("The array obtained by rotating it to left by 3 positions is:", arr)
}

输出

The entered array is: [1 2 3 4 5 6 7 8]
The array obtained by rotating it to left by 3 positions is: [4 5 6 7 8 1 2 3]

将数组右旋

示例

以下代码演示了一个Go语言程序,可以根据指定的次数将数组元素向右旋转。

package main
import "fmt"
func rotateRight(arr []int, count int) {
   for i := 0; i < count; i++ {
      var j, last int
      length := len(arr)
      last = arr[length-1]
      for j = length - 1; j > 0; j-- {
         arr[j] = arr[j-1]
      }
      arr[0] = last
   }
}
func main() {
   arr := []int{1, 2, 3, 4, 5, 6, 7, 8}
   fmt.Println("The entered array is:", arr)
   rotateRight(arr, 3)
   fmt.Println("The array obtained by rotating it to right by 3 positions is:", arr)
}

输出

The entered array is: [1 2 3 4 5 6 7 8]
The array obtained by rotating it to right by 3 positions is: [6 7 8 1 2 3 4 5]

使用内部函数将数组向右旋转

语法

func copy(dst, str[] type) int

copy 函数是GO语言中用来将一个源数组的值复制到目标数组中,并返回被复制的元素数量作为结果。它以这两个数组作为参数。

func make ([] type, size, capacity)

make 函数在Go语言中用于创建数组/映射,它接受要创建的变量的类型、大小和容量作为参数。

示例

现在让我们看看另一个程序,我们可以使用内置函数将数组变量向右旋转。

package main
import "fmt"
func rotateRight(nums []int, k int) {
   k %= len(nums)
   new_array := make([]int, len(nums))
   copy(new_array[:k], nums[len(nums)-k:])
   copy(new_array[k:], nums[:len(nums)-k])
   copy(nums, new_array)
}
func main() {
   arr := []int{1, 2, 3, 4, 5, 6, 7, 8}
   fmt.Println("The entered array is:", arr)
   rotateRight(arr, 4)
   fmt.Println("The array obtained by rotating it to right by 4 positions is:", arr)
}

输出

The entered array is: [1 2 3 4 5 6 7 8]
The array obtained by rotating it to right by 4 positions is: [5 6 7 8 1 2 3 4]

结论

我们已成功编译和执行了一个Go语言程序,用于旋转数组元素,并提供了示例。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程