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` 函式列印最大和最小元素。