Golang 获取切片中的最大值和最小值

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

结论

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程