Golang は、サーバーサイド開発やシステム プログラミングで広く使用されている、効率的でシンプルかつ信頼性の高いプログラミング言語です。 Golang では、sort パッケージにより、さまざまなソートのニーズに対応できる豊富なソート機能が提供されます。この記事では、Golangのsortパッケージの使い方を紹介します。
sort パッケージは、[]int、[]float64、[]string などのさまざまなタイプのシーケンスに基づいて並べ替える関数を提供します。また、カスタム タイプの並べ替えを定義するために使用できる、一般的な並べ替えインターフェイス sort.Interface も提供します。ソート パッケージによって提供されるソート アルゴリズムは、最適化されたクイック ソートとヒープ ソートです。 sort パッケージには、Sort、Reverse、IsSorted という 3 つの主要な関数があります。
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}]
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]
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
カスタム タイプの特定の属性に基づいて並べ替えることもできます。種類。例は次のとおりです:
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 サイトの他の関連記事を参照してください。