Golang 获取切片中的最大值和最小值
在本文中,我们将看到如何从切片中获取最大值和最小值。切片是一系列元素,就像数组一样。数组是一系列固定的元素,而切片是一个动态数组,意味着它的值是不固定的,可以改变的。切片比数组更高效、更快,而且它们是通过引用传递而不是值传递的。让我们使用不同的示例和基于它们的算法来理解这个基本概念。
方法1:使用辅助函数
在这种方法中,我们将学习如何使用外部函数从切片中获取最大和最小元素。通过使用用于在Golang中打印语句的fmt.Println()函数,将获取的最小值和最大值打印在屏幕上。
语法
func append(slice, element_1, element_2…, element_N) []T
append函数用于将值添加到数组切片中。它接受多个参数。第一个参数是我们希望添加值的数组,其后是要添加的值。然后,该函数返回包含所有值的最终数组切片。
步骤
- 步骤1 - 创建一个名为main的包,并在程序中声明fmt(格式化包)包,其中main生成可执行代码,而fmt用于格式化输入和输出。
-
步骤2 - 创建一个名为main的函数,在该函数中使用append函数创建一个切片并在其中添加一些值。
-
步骤3 - 在函数内部将切片作为参数调用minandmax函数。
-
步骤4 - 在minandmax函数中,将切片的第一个元素设置为最小值和最大值。
-
步骤5 - 运行一个循环,直到切片的长度,并在第一种情况下检查切片中的数字是否小于最小值,如果是,则将最小值设置为该数字。
-
步骤6 - 在下一个条件中检查数字是否大于最大值,如果是,则将最大值设置为该数字。重复此过程直到循环终止。
-
步骤7 - 我们获得最小和最大元素,并将其返回给函数,使用fmt.Println()函数打印,其中ln表示换行符。
示例
Golang程序,使用辅助函数从切片中获取最大和最小元素
package main
import (
"fmt"
)
func main() {
var values []int //creating slice
values = append(values,10) //fill the elements in slice using append function
values = append(values, 8)
values = append(values, 20)
values = append(values, 4)
values = append(values, 56)
fmt.Println("The slice containing the values is:", values)
min, max := minandmax(values)
fmt.Println("Minimum element in the slice is:", min) //print min element
fmt.Println("Maximum element in the slice is:", max) //print max element
}
func minandmax(values []int) (int, int) {
min := values[0] //assign the first element equal to min
max := values[0] //assign the first element equal to max
for _, number := range values {
if number < min {
min = number
}
if number > max {
max = number
}
}
return min, max
}
输出
The slice containing the values is: [10 8 20 4 56]
Minimum element in the slice is: 4
Maximum element in the slice is: 56
方法2:使用内置函数排序
在这个方法中,我们将看到如何使用内置函数排序来找到切片中的最大和最小元素。让我们通过算法和代码来执行这个示例。
语法
sort.Ints(slice)
在Golang中,sort函数用于对切片中的元素进行排序。它可用于对字符串、整数和浮点数值进行排序。它使用切片作为参数,将值按升序进行排序。
步骤
- 步骤1 - 创建一个名为main的包,并在程序中声明fmt(格式化包)包,其中main生成可执行代码,而fmt用于格式化输入和输出。
-
步骤2 - 除了这些包之外,也在程序中导入sort包,以找到最小和最大元素。
-
步骤3 - 创建一个main函数,在该函数中创建一个带有一些值的切片。
-
步骤4 - 使用sort函数对切片进行排序,在使用此函数之后,我们将得到最小和最大元素。
-
步骤5 - 使用fmt.Println()函数打印最小和最大元素,其中ln指代换行。
示例
Golang程序使用内置函数sort从切片中获取最大和最小元素。
package main
import (
"fmt"
"sort"
)
func main() {
values := []int{10, 8, 43, 52, 98} // create slice
fmt.Println("The values in slice are:", values)
sort.Ints(values) // sort the values finding min and max element
fmt.Println("Minimum value in the slice is:", values[0]) //print min element
fmt.Println("Maximum value in the slice is:", values[len(values)-1]) //print max element
}
输出
The values in slice are: [10 8 43 52 98]
Minimum value in the slice is: 8
Maximum value in the slice is: 98
结论
我们执行了使用两种方法来查找切片中最小和最大元素的程序。在第一种方法中,我们使用了一个外部函数来查找切片中的元素;而在第二种方法中,我们使用了排序函数来打印出最大和最小元素。