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
GO语言中的 复制 函数用于将一个源数组的值复制到目标数组中,并将复制的元素数量作为结果返回。它需要两个数组作为参数。
func make ([] type, size, capacity)
Go语言中的 make 函数用于创建一个数组/映射,它接受要创建的变量类型、大小和容量作为参数。
例子
现在让我们来看看另一个程序,我们可以使用内部函数将数组变量向右旋转。
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语言程序来旋转一个数组中的元素,并附有实例。