如何在 Golang 中排序切片?


在 Go 程式語言中,切片是一個動態陣列,可以容納一系列相同型別的元素。可以使用內建的 sort 包對切片進行排序。在本文中,我們將討論如何在 Golang 中排序切片。

在 Go 中排序切片很簡單,並且有多種方法可以實現。最常見的方法是使用 sort.Slice() 函式,該函式使用提供的比較函式對切片進行排序。以下是它的工作原理:

示例

package main

import (
   "fmt"
   "sort"
)

func main() {
   s := []int{5, 2, 6, 3, 1, 4}
   fmt.Println("Original slice:", s)

   sort.Slice(s, func(i, j int) bool {
      return s[i] < s[j]
   })
   fmt.Println("Sorted slice:", s)
}

輸出

Original slice: [5 2 6 3 1 4]
Sorted slice: [1 2 3 4 5 6]

在上面的示例中,我們建立了一個包含值 5、2、6、3、1 和 4 的整數切片。然後,我們使用 sort.Slice() 函式按升序對切片進行排序。該函式有兩個引數:要排序的切片和一個確定元素順序的比較函式。在本例中,比較函式比較切片中的兩個元素,如果第一個元素小於第二個元素,則返回 true。

sort.Slice() 函式還可以透過反轉比較邏輯來按降序對切片進行排序:

示例

package main

import (
   "fmt"
   "sort"
)

func main() {
   s := []int{5, 2, 6, 3, 1, 4}
   fmt.Println("Original slice:", s)

   sort.Slice(s, func(i, j int) bool {
      return s[i] > s[j]
   })

   fmt.Println("Sorted slice:", s)
}

輸出

Original slice: [5 2 6 3 1 4]
Sorted slice: [6 5 4 3 2 1]

在上面的示例中,我們使用與之前相同的整數切片,但透過反轉比較邏輯將其按降序排序。

除了 sort.Slice() 之外,sort 包還提供其他排序函式,例如 sort.Ints() 和 sort.Strings(),這些函式針對特定型別的切片排序進行了最佳化。

示例

package main

import (
   "fmt"
   "sort"
)

func main() {
   s := []int{5, 2, 6, 3, 1, 4}
   fmt.Println("Original slice:", s)

   sort.Ints(s)

   fmt.Println("Sorted slice:", s)
}

輸出

Original slice: [5 2 6 3 1 4]
Sorted slice: [1 2 3 4 5 6]

在上面的示例中,我們使用 sort.Ints() 函式按升序對整數切片進行排序。

結論

在 Golang 中排序切片很容易,可以使用內建的 sort 包來實現。透過使用適當的排序函式或比較函式,可以按升序或降序對切片進行排序。瞭解如何排序切片對於編寫高效且有效的 Go 程式碼至關重要。

更新於: 2023年4月25日

3K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.