Go语言数组旋转程序
介绍
在本教程中,我们将学习如何编写一个 Go 语言程序来旋转数组。我们将为此编写两个程序。一个用于向左旋转数组,另一个用于向右旋转数组。
Go语言数组向左旋转程序
以下代码说明了如何使用用户定义函数向左旋转数组。
上述程序的算法
步骤 1 − 导入 fmt 包,该包允许我们在屏幕上打印任何内容。
步骤 2 − 创建一个名为 rotateLeft() 的函数,该函数在旋转数组后返回最终数组。
步骤 3 − 此函数使用 for 循环遍历数组,并在每次迭代中调用 rotateLeftByOne() 函数。
步骤 4 − 此函数将数组作为参数,并使用 for 循环遍历数组变量。
步骤 5 − 在每次迭代中,我们将下一个值放置到前一个位置,并恢复第一个元素。
步骤 6 − 现在调用 main() 函数。
步骤 7 − 初始化一个整数数组并为其赋值。
步骤 8 − 在屏幕上打印数组,并通过将数组和元素应移动的次数作为参数传递给函数来调用 rotateLeft() 函数。
步骤 9 − 使用 fmt.Println() 函数在屏幕上打印最终数组。
示例
package main import "fmt" 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, 7) fmt.Println("The array obtained by rotating it to left by 7 positions is:", arr) }
输出
The entered array is: [1 2 3 4 5 6 7 8] The array obtained by rotating it to left by 7 positions is: [8 1 2 3 4 5 6 7]
Go语言数组向右旋转程序
以下代码说明了一个 Go 语言程序,用于将数组元素向右旋转任意次数。
上述程序的算法
步骤 1 − 导入 fmt 包,该包允许我们在屏幕上打印任何内容。
步骤 2 − 定义一个名为 rotateRight() 的函数,该函数将数组向右旋转任意次数。
步骤 3 − 它使用 for 循环遍历数组并将倒数第二个元素存储在一个变量中。
步骤 4 − 然后它使用另一个 for 循环将元素向右移动到数组的长度。
步骤 5 − 启动 main() 函数。这是程序的起点,从这里开始执行。
步骤 6 − 初始化一个整数数组并为其赋值。在屏幕上打印此数组。
步骤 7 − 现在通过将数组和应移动的次数作为参数传递给它来调用 rotateRight() 函数。
步骤 8 − 使用 fmt.Println() 函数在屏幕上打印最终数组。
示例
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} // printing the array on the screen using fmt.Println() function fmt.Println("The entered array is:", arr) rotateRight(arr, 7) fmt.Println("The array obtained by rotating it to right by 7 positions is:", arr) }
输出
The entered array is: [1 2 3 4 5 6 7 8] The array obtained by rotating it to right by 7 positions is: [2 3 4 5 6 7 8 1]
使用预定义函数向右旋转数组
现在让我们看看另一个程序,使用该程序我们可以向右旋转数组变量,但无需使用循环和条件语句。
语法
func copy(dst, str[] type) int
Go 语言中的 copy 函数用于将一个源数组的值复制到目标数组,并返回复制的元素数量作为结果。它将两个数组作为参数。
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, 7) fmt.Println("The array obtained by rotating it to right by 7 positions is:", arr) }
输出
The entered array is: [1 2 3 4 5 6 7 8] The array obtained by rotating it to right by 7 positions is: [2 3 4 5 6 7 8 1]
结论
我们已经成功编译并执行了一个 Go 语言程序来旋转数组的元素以及示例。