ホームページ >バックエンド開発 >Golang >Golang ソート パッケージの使用方法について話しましょう

Golang ソート パッケージの使用方法について話しましょう

PHPz
PHPzオリジナル
2023-04-03 09:19:27688ブラウズ

Golang は、サーバーサイド開発やシステム プログラミングで広く使用されている、効率的でシンプルかつ信頼性の高いプログラミング言語です。 Golang では、sort パッケージにより、さまざまなソートのニーズに対応できる豊富なソート機能が提供されます。この記事では、Golangのsortパッケージの使い方を紹介します。

  1. sort パッケージの概要

sort パッケージは、[]int、[]float64、[]string などのさまざまなタイプのシーケンスに基づいて並べ替える関数を提供します。また、カスタム タイプの並べ替えを定義するために使用できる、一般的な並べ替えインターフェイス sort.Interface も提供します。ソート パッケージによって提供されるソート アルゴリズムは、最適化されたクイック ソートとヒープ ソートです。 sort パッケージには、Sort、Reverse、IsSorted という 3 つの主要な関数があります。

  1. Sort 関数

Sort 関数は、sort.Interface を実装したシーケンスを昇順にソートします。 sort.Interface インターフェイスは、Len、Swap、Less の 3 つのメソッドを定義します。このうち、Len メソッドはシーケンスの長さを返し、Swap メソッドは 2 つの要素の位置を交換し、Less メソッドは位置 i の要素が位置 j の要素より小さいかどうかを返します。例は次のとおりです。

package main

import (
    "fmt"
    "sort"
)

type persons []struct {
    name string
    age  int
}

func (ps persons) Len() int {
    return len(ps)
}

func (ps persons) Swap(i, j int) {
    ps[i], ps[j] = ps[j], ps[i]
}

func (ps persons) Less(i, j int) bool {
    return ps[i].age < ps[j].age
}

func main() {
    ps := persons{{"Tom", 25}, {"Jerry", 20}, {"Alice", 30}}
    sort.Sort(ps)
    fmt.Println(ps)
}

出力結果は次のとおりです。

[{Jerry 20} {Tom 25} {Alice 30}]
  1. Reverse 関数

Reverse 関数は、次のシーケンスの逆シーケンスを返します。 sort.Interface インターフェイスを実装します。例は次のとおりです。

package main

import (
    "fmt"
    "sort"
)

func main() {
    ns := []int{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}
    sort.Sort(sort.Reverse(sort.IntSlice(ns)))
    fmt.Println(ns)
}

出力結果は次のとおりです。

[9 6 5 5 5 4 3 3 2 1 1]
  1. IsSorted 関数

IsSorted 関数は、並べ替えを実装するシーケンスかどうかを判断します。インターフェイスは Less メソッドに従っています。ルールはソートされています。例は次のとおりです:

package main

import (
    "fmt"
    "sort"
)

func main() {
    ns := []int{1, 2, 3, 3, 4, 5}
    fmt.Println(sort.IsSorted(sort.IntSlice(ns)))
    ns = []int{1, 2, 3, 4, 3, 5}
    fmt.Println(sort.IsSorted(sort.IntSlice(ns)))
}

出力結果は次のとおりです:

true
false
  1. カスタム タイプの並べ替え

カスタム タイプの特定の属性に基づいて並べ替えることもできます。種類。例は次のとおりです:

package main

import (
    "fmt"
    "sort"
)

type Person struct {
    Name string
    Age  int
}

type Persons []*Person

func (ps Persons) Len() int {
    return len(ps)
}

func (ps Persons) Swap(i, j int) {
    ps[i], ps[j] = ps[j], ps[i]
}

func (ps Persons) Less(i, j int) bool {
    return ps[i].Age < ps[j].Age
}

func main() {
    ps := Persons{{"Tom", 25}, {"Jerry", 20}, {"Alice", 30}}
    sort.Sort(ps)
    for _, p := range ps {
        fmt.Printf("%s %d\n", p.Name, p.Age)
    }
}

出力結果は次のとおりです:

Jerry 20
Tom 25
Alice 30

概要:

Golang ソート パッケージは、さまざまな種類のシーケンスをソートできる強力なソート機能を提供します。 sort.Interface インターフェイスを使用して、カスタム タイプの並べ替えを定義することもできます。ソート パッケージによって提供されるソート アルゴリズムは、クイック ソートとヒープ ソートが最適化されているため、より効率的です。 sort パッケージ全体は使いやすく、ロジックが明確で、Golang には欠かせないパッケージです。

以上がGolang ソート パッケージの使用方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。