Go语言程序:从切片中获取最大值和最小值


在本文中,我们将学习如何从切片中获取最大和最小元素。切片类似于数组,都是元素的序列。数组是固定长度的元素序列,而切片是动态数组,这意味着它的长度不是固定的,可以改变。切片比数组更高效、更快,并且它们是按引用传递而不是按值传递。让我们通过不同的示例和基于它们的算法来理解这个基本概念。

方法一:使用辅助函数

在此方法中,我们将学习如何使用外部函数从切片中获取最大和最小元素。使用 `fmt.Println()` 函数打印获得的最小值和最大值,该函数用于在 Go 语言中打印语句。

语法

func append(slice, element_1, element_2…, element_N) []T

`append` 函数用于向数组切片添加值。它接受多个参数。第一个参数是要添加值的数组,后面跟着要添加的值。然后,该函数返回包含所有值的最终数组切片。

算法

  • 步骤 1 − 创建一个 `main` 包,并在程序中声明 `fmt`(格式化包),其中 `main` 生成可执行代码,`fmt` 帮助格式化输入和输出。

  • 步骤 2 − 创建一个 `main` 函数,并在该函数中使用 `append` 函数创建一个切片和一些值。

  • 步骤 3 − 在函数内部调用 `minandmax` 函数,并将切片作为参数传递。

  • 步骤 4 − 在 `minandmax` 函数中,将切片的第一个元素设置为 `min` 和 `max`。

  • 步骤 5 − 运行一个循环直到切片的长度,并在第一种情况下检查切片中的数字是否小于 `min` 值,如果小于,则将 `min` 值设置为该数字。

  • 步骤 6 − 在下一个条件中,检查数字是否大于 `max` 值,如果大于,则将 `max` 值设置为该数字。重复此过程,直到循环终止。

  • 步骤 7 − 我们获得 `min` 和 `max` 元素,将其返回到函数并使用 `fmt.Println()` 函数打印,其中 `ln` 指的是换行符。

示例

使用辅助函数从切片中获取最大和最小元素的 Go 语言程序

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

方法二:使用内置函数 `sort`

在此方法中,我们将学习如何使用内置函数 `sort` 从切片中查找最大和最小元素。让我们通过算法和代码了解如何执行此示例。

语法

sort.Ints(slice)

Go 语言中的 `sort` 函数用于对切片中的元素进行排序。它用于对字符串、整数和浮点值进行排序。它按升序对值进行排序,并将切片作为参数。

算法

  • 步骤 1 − 创建一个 `main` 包,并在程序中声明 `fmt`(格式化包),其中 `main` 生成可执行代码,`fmt` 帮助格式化输入和输出。

  • 步骤 2 − 除了这些包之外,还在程序中导入 `sort` 包以查找最小和最大元素。

  • 步骤 3 − 创建一个 `main` 函数,并在该函数中创建一个包含一些值的切片。

  • 步骤 4 − 使用 `sort` 函数对切片进行排序,使用此函数后,我们将获得最小和最大元素。

  • 步骤 5 − 使用 `fmt.Println()` 函数打印最小和最大元素,其中 `ln` 指的是换行符。

示例

使用内置函数 `sort` 从切片中获取最大和最小元素的 Go 语言程序

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

结论

我们使用两种方法执行了查找切片中最小和最大元素的程序。在第一种方法中,我们使用外部函数从切片中查找元素;在第二种方法中,我们使用 `sort` 函数打印最大和最小元素。

更新于:2023年1月23日

4K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告