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+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告